写个文章记录下
#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
typedef struct node
{
ElemType data;
struct Node *next;
}Node,*LinkList;
LinkList Lcreat( int n){
Node *p,*head,*q;
ElemType x;
head=(Node*)malloc(sizeof(Node));
q=head;
while(n>0){
scanf("%d",&x);
p=(Node*)malloc(sizeof(Node));
p->data=x;
q->next=p;
q=p;
n--;
}
p->next=NULL;
return (head);
}
LinkList Linsert(LinkList src,int i,ElemType x){
Node *pre;
pre=src;
int tempi=0;
for(tempi=1;tempi<i;tempi++)
pre=pre->next;
Node *p;
p=(Node*)malloc(sizeof(Node));
p->data=x;
p->next=pre->next;
pre->next=p;
return src;
}
LinkList Ldelete(LinkList src,ElemType x){
Node *p,*pre;
p=src->next;
while((p->next!=NULL)&&(p->data!=x)){
pre=p;
p=p->next;
}
pre->next=p->next;
free(p);
return src;
}
int main()
{
LinkList list,start;
printf("请输入单链表的数据:");
list=Lcreat(5);
for(start = list->next; start != NULL; start = start->next)
printf("%d ",start->data);
printf("\n");
int i;
ElemType x;
printf("请输入插入数据的位置:");
scanf("%d",&i);
printf("请输入插入数据的值:");
scanf("%d",&x);
Linsert(list,i,x);
for(start = list->next; start != NULL; start = start->next)
printf("%d ",start->data);
printf("\n");
printf("请输入要删除的元素的值:");
scanf("%d",&x);
Ldelete(list,x);
for(start = list->next; start != NULL; start = start->next)
printf("%d ",start->data);
printf("\n");
free(list);
return 0;
}