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 }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。