首页 新闻 会员 周边

下面的创建链表并且删除指定节点的代码,请帮我改改吧!

0
悬赏园豆:100 [待解决问题]

#include<stdio.h>
#include<malloc.h>

typedef struct node//定义一个结构体,并取别名。
{
int data;
struct node*next;//结构体指针

}N;
N *create(int n)//自定义一个创建链表的函数
{
int i,a;
N *head=NULL,*p1,*p2;
printf("Please input all:");
for(i=n;i>0;i--)
{
p1=(N*)malloc(sizeof(N));//分配空间
printf("i\n");
scanf("%d",p1->data);
// printf("i\n");
//p1->next

// p1->data=a;//给数据域赋值
if(NULL==head)//给定头结点
{
head=p1;
p2=p1;
}
else
{
p2->next=p1;//指定后继指针
p2=p1;
}
p2->next=NULL;
return head;//返回头结点
}
N *del(N *head)
{
int data;
N*p1;//指向要删除的节点
N*p2;
printf("要删除的是:\n");
scanf("%d",&data);
if(head==NULL);
{
printf("空表\n");
return head;
}
p1=head;
while(strcmp(p1->data)!=0&&p1->;next!=NULL)//查找要删除的节点
{
p2=p1;
p1=p1->next;
}
if(strcmp(p1->data)==0)//找到符合条件的节点
{
if(p1==head)//要删除的是头结点
head=p1->next;
else //要删除的不是头结点
p2->next=p1->next;
free(p1);
printf("删除:%d",data);
}
else
printf("未找到要删除的节点\n");
return head;//返回新的表头
}
int main()
{
int n;
N*p;
printf("请输入链表结点个数:\n");
scanf("%d",&n);
p=create(n);//调用创建的链表函数,把结点个数传进去
p=del(N *head);
while(p)
{
printf("%d ",p->data);
p=->next;//指向下一节点
}
printf("\n");
return 0;
}

 

问问问。。。的主页 问问问。。。 | 初学一级 | 园豆:102
提问于:2017-11-18 13:16
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册