这个程序怎样修改?

来源:百度知道 编辑:UC知道 时间:2024/05/21 17:33:56
这是在单链表中插入元素,如何将其修改成删除一个元素?
#include<stdio.h>
#include<stdlib.h>

typedef struct node{
char a;
struct node *next;
}NODE;

NODE *head;

NODE *insertNode(int n)
{
NODE *p, *q;
p = (NODE*)malloc(sizeof(NODE));
p ->a = n;
p ->next = NULL;
if(head == NULL)
{
head = p;
}
else
{
for(q = head; q ->next; q = q ->next);
q ->next = p;
}
return head;
}

main()
{
int n;
NODE *p;
head = NULL;

printf("Please Enter number:\n");
while(scanf("%d",&n)){

printf("Please Enter number:\n");
flushall();
head = insertNode(n);
}

for(p = head; p; p = p ->next)
printf("%d\n",p ->a);

free(head);

添一个函数Delt

Node *Delt(int n)
{
Node *p;
bool flag=false;
if(head==NULL)
printf("ERORR!");
p=head->next
while(p!=NULL)
{
if (p->a==n)
{
p->next=p->next->next;
flag=true;
}
p=p->next;
}
if (flag==false)
printf("NOT FOUND %d",n);
else
printf("DELETED");
}

NODE *insertNode(int n)
{
NODE *p, *q;
p = (NODE*)malloc(sizeof(NODE));
p ->a = n;
p ->next = NULL;
if(head == NULL)
{
head = p;
}
else
{
for(q = head; q ->next; q = q ->next);
q ->next = p;
}
return head;
}
改下这里面的就可以了,我把思路说给你听,因为我2年没写过程序了,很多语句都忘了:你本来是判断P指针指向的数是否为空,如果是,插入一个数,现在你改为P->next是否为空,从后面向前移动,不为空就删除,只要p为空

NODE *delNode(void)
{
NODE *p, *q;
for(q = head; q -