单链表,创建单链表函数出了点问题导致程序报错。。
1 #include"stdio.h"
2 #include"stdlib.h"
3 typedef int DataType;
4 typedef struct node{
5 DataType data;
6 struct node *link;
7 }LinkNode,*LinkList;
8 void initList(LinkList *first){
9 (*first)=(LinkNode*)malloc (sizeof(LinkNode));
10 if(!first){
11 printf("存储分配错误!\n");
12 exit(1);
13 }
14 (*first)->link=NULL;
15 }
16 void createListFront(LinkList *first,DataType endTag){
17 DataType val;
18 scanf("%d",&val);
19 if(val==endTag)return;
20 LinkNode *p=(LinkNode*)malloc(sizeof(LinkList));
21 if(!p)exit(1);
22 p->data=val;
23 p->link=(*first)->link;
24 (*first)->link=p;
25 createListFront(first,endTag);
26 }
27 int Length(LinkList *first){
28 LinkNode *p=(*first)->link;
29 int n=0;
30 while(p!=NULL){
31 p=p->link;
32 n++;
33 }
34 return n;
35 }
36 LinkNode *Search(LinkList *first,DataType x){
37 LinkNode *p=(*first)->link;
38 while(p!=NULL&&p->data!=x){
39 p=p->link;
40 return p;
41 }
42 }
43 LinkNode *Locate(LinkList *first,int i){
44 int c;
45 if(i<0)
46 return NULL;
47 LinkNode *p=(*first);
48 int k=0;
49 while(p!=NULL&&k<i){
50 p=p->link;
51 k++;
52 }
53 printf("%d",p->data);
54 }
55 int Insert(LinkList *first,DataType x,int i){
56 LinkNode *p=Locate(first,i-1);
57 if(p==NULL) return 0;
58 LinkNode *q=(LinkNode*)malloc (sizeof(LinkNode));
59 if(q==NULL)
60 exit(1);
61 q->data=x;
62 q->link=p->link;
63 p->link=q;
64 return 1;
65 }
66 int Remove(LinkList *first,int i,DataType&x){
67 LinkNode *p=Locate(first,i-1);
68 if(p==NULL||p->link==NULL)return 0;
69 LinkNode *q=p->link;
70 p->link=q->link;
71 x=q->data;
72 free(q);
73 }
74 int printList(LinkList *first) {
75 LinkNode *p=(*first)->link;//p指向第一个节点;;
76 int i = 0;
77 printf("打印整个链表\n");
78 if (p==NULL) {
79 printf("这是一个空链表.\n");
80 }
81 while(p){
82 i++;
83 printf("第%d个节点的数据data为=%d\n",i,p->data);
84 p=p->link;
85 }
86 return 1;
87 }
88 main(){
89 LinkList *first;
90 DataType endTag;
91 (*first)=(LinkNode*)malloc (sizeof(LinkNode));
92 if(!first){
93 printf("存储分配错误!\n");
94 exit(1);
95 }
96 scanf("$d",&endTag);
97 (*first)->link=NULL;
98 createListFront(first,endTag);
99 printList(first);
100 int x;
101 printf("请输入要查找的元素: ");
102 scanf("%d",&x);
103 Search(first,x);
104 int c,i;
105 printf("请输入需要定位的元素位置: ");
106 scanf("%d",&c);
107 scanf("%d",&i);
108 Locate(first,i);
109 int b,j;
110 printf("请输入插入元素的位置和值: ");
111 scanf("%d",&b);
112 scanf("%d",&j);
113 Insert(first,b,j);
114 int d1,d2;
115 printf("请输入要删除的元素值及位置: ");
116 scanf("%d",&d1);
117 scanf("%d",&d2);
118 Remove(first,d1,d2);
119 }
来源:https://www.cnblogs.com/jjbbbb/p/10961364.html