【数据结构】 线性表 的 链式存储结构
发布时间:2021-03-31 17:36:42 所属栏目:安全 来源:网络整理
导读:1 #includestdio.h 2 #includestdlib.h 3 4 typedef struct LinkList { 5 int data; 6 LinkList * next; 7 8 }LinkList,* linklist; 9 // 创建头结点 10 int CreateList(linklist L) { 11 L = (linklist) malloc ( sizeof (LinkList)); 12 if (! L) 13 exit(
1 #include<stdio.h> 2 #include<stdlib.h> 3 4 typedef struct LinkList { 5 int data; 6 LinkList *next; 7 8 }LinkList,*linklist; 9 //创建头结点 10 int CreateList(linklist &L) { 11 L = (linklist)malloc(sizeof(LinkList)); 12 if(!L) 13 exit(0); 14 L->next = NULL; 15 L->data = 0; 16 } 17 //尾插法 18 int PushBack(linklist &L) { 19 linklist L1 = NULL; 20 L1 = L ; 21 char c = ‘N‘; 22 for( ; ; ){ 23 linklist q = NULL; 24 CreateList(q); 25 printf("请输入元素n"); 26 scanf("%d",&(q->data)); 27 L1->next = q ; 28 L1= q ; 29 fflush(stdin); 30 printf("是否继续输入Y/N"); 31 scanf("%c",&c); 32 fflush(stdin); 33 if(c != ‘Y‘) 34 return 0; 35 } 36 } 37 //头插法 38 int PushFront(linklist &L) { 39 char c = ‘N‘; 40 linklist p = NULL ; 41 // L1 = L ; 42 p = L; 43 for( ; ; ){ 44 linklist q = NULL ; 45 CreateList(q); 46 printf("请输入元素n"); 47 scanf("%d",&(q->data)); 48 p = L->next; 49 L->next = q ; 50 q->next = p ; 51 fflush(stdin); 52 printf("是否继续输入Y/N"); 53 scanf("%c",&c); 54 fflush(stdin); 55 if(c != ‘Y‘) 56 return 0; 57 } 58 } 59 //输出所有元素 60 void PrintfList(linklist &L) { 61 linklist L1 = L ; 62 while(L1->next != NULL) 63 { 64 L1 = L1->next; 65 printf("///%d///",L1->data); 66 } 67 68 } 69 70 int deleteList(linklist &L,int n) { 71 if(L->next == NULL) 72 return 0 ; 73 linklist L1 = L ; 74 while(L1->next->data != n) 75 L1 = L1->next; 76 L1->next = L1->next->next; 77 78 } 79 //两个有序链表归并 80 LinkList *MergeList(linklist &La,linklist &Lb ) { 81 linklist L = NULL,l = NULL,la = La->next,lb = Lb->next; 82 CreateList(L); 83 l = L; 84 while(lb && la){ 85 if(la->data >= lb->data){ 86 l->next = la ; 87 l = l->next; 88 la = la -> next; 89 } 90 else{ 91 l -> next = lb; 92 l = l->next; 93 lb = lb -> next; 94 } 95 } 96 l->next = lb ? lb : la ; 97 return L ; 98 } 99 //插入元素 100 int insertList(linklist &L,int n,int data) { 101 linklist L1 = L,q ; 102 for(int i = 0 ; i < n,L1->next!=NULL ; i++ ) 103 { 104 if(i = n-1) 105 { 106 CreateList(q); 107 q ->data = data ; 108 q->next = L1->next; 109 L1->next = q; 110 return n; 111 } 112 L1 = L1 -> next; 113 } 114 return 0; 115 } 116 int main() { 117 LinkList *q = NULL,*p = NULL,*L = NULL; 118 CreateList(q); 119 PushFront(q); 120 PrintfList(q); 121 printf("n"); 122 CreateList(p); 123 PushFront(p); 124 PrintfList(p); 125 L = MergeList(q,p ); 126 printf("n"); 127 PrintfList(L); 128 // deleteList(q,3); 129 // PrintfList(q); 130 131 } (编辑:航空爱好网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐