#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;
}