这个程序怎样修改?
来源:百度知道 编辑: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);
#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 -