单链表
Posted jjbbbb
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单链表相关的知识,希望对你有一定的参考价值。
单链表,创建单链表函数出了点问题导致程序报错。。
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
以上是关于单链表的主要内容,如果未能解决你的问题,请参考以下文章