【数据结构】 线性表 的 链式存储结构
发布时间:2021-03-31 15:01:48 所属栏目:安全 来源:网络整理
导读: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(0); 14
|
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 }
(编辑:我爱故事小小网_铜陵站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


浙公网安备 33038102330570号