1 #include <iostream>
2 #include<stdlib.h>
3 using namespace std;
4 #define maxsize 10
5 typedef int elemtype;
6 /*struct xlist
7 {
8 elemtype *elem;
9 int length;
10 };
11 int createxlist(xlist &k) ##顺序表
12 {
13 k.elem = new elemtype[maxsize];
14 if (!k.elem)
15 exit(1);
16 for (int i = 0; i < maxsize; i++)
17 {
18 k.elem[i] = 0;
19 }
20 k.length = 0;
21 return 0;
22 }
23 int insertdata(xlist &k, int b,elemtype n[])
24 {
25 cout << " 25";
26 for (int i = 0; i < b; i++)
27 {
28 if (k.elem[i]==0)
29 {
30 k.elem[i] = n[i];
31 k.length++;
32 }
33 }
34 return 0;
35 }
36 int output(xlist k)
37 {
38 for (int i = 0; i < k.length; i++)
39 {
40 cout << k.elem[i]<<" ";
41 }
42 return 0;
43 }
44 int main()
45 {
46 xlist k;
47 createxlist(k);
48 int t = 5,n[5],b;
49 for(int i=0;i<t;i++)
50 cin >> n[i];
51 insertdata(k, t, n);
52 output(k);
53 return 0;
54 } */
55
56
57
58 /*typedef struct lnode 链表
59 {
60 elemtype data;
61 lnode *next;
62
63 }lnode,*linklist;*/
64 /*int createlinklist(linklist &h,int t,int n[]) #¥前插法
65 {
66 h = new lnode;
67 h->next = NULL;
68 lnode* p;
69 for (int i = 0; i < t; i++)
70 {
71 p = new lnode;
72 p->data = n[i];
73 p->next = h->next;
74 h->next = p;
75 }
76 return 0;
77 }*/
78 /*int createlinklist(linklist &h, int t, int n[]) 后插法
79 {
80 h = new lnode;
81 h->data = -maxsize;
82 h->next = NULL;
83 lnode *p,*r;
84 r = h;
85 for (int i = 0; i < t; i++)
86 {
87 p = new lnode;
88 p->data = n[i];
89 p->next = NULL;
90 r->next = p;
91 r = p;
92 }
93 return 0;
94 }*/
95 /*void output(linklist h)
96 {
97 h = h->next;
98 while (h->next!= NULL)
99 {
100 cout << h->data;
101 h = h->next;
102 }
103 cout << h->data;
104 }*/
105
106 /*void outputsinglelist(linklist h)
107 {
108 h = h->next; 因为头结点数值不赋予就是乱码不是NULL,和它的Next域也不是NULL,因此输出时需控制
109 while (h->data!=-maxsize)
110 {
111 cout << h->data << " ";
112 h = h->next;
113
114 }
115 }
116 void singlecircle(linklist &h, linklist &k) 两个单链表合成一个循环链表
117 {
118 lnode *A, *B,*p;
119 A = h;
120 B = k;
121 while (h->next != NULL)
122 {
123 h = h->next;
124 }
125 h->next = A;
126 while (k->next != NULL)
127 {
128 k = k->next;
129 }
130 k->next = B;
131 p = k->next->next;
132 k->next = h->next;
133 h->next = p;
134 h = A;
135 delete B;
136 }*/
137 typedef struct doublelist
138 {
139 elemtype data;
140 doublelist *prior,*next;
141 }doublelist,*dlinklist;
142 int createdlinklist(dlinklist& k,int t,int n[])
143 {
144 doublelist *r,*p;
145 k = new doublelist;
146 k->data = -maxsize;
147 k->next = NULL;
148 r = k;
149 for (int i = 0; i < t; i++)
150 {
151 p = new doublelist;
152 p->data = n[i];
153 p->prior = r;
154 p->next =NULL;
155 r->next = p;
156 r = p;
157 }
158 r->next = k;
159 return 0;
160 }
161 void outputdoublelist(dlinklist h)
162 {
163 h = h->next;
164 while (h->data != -maxsize)
165 {
166 cout << h->data<<" ";
167 h = h->next;
168 }
169 }
170 int main()
171 {
172 dlinklist h,k;
173 int t = 5, n[5];
174 for (int i = 0; i < t; i++)
175 cin >> n[i];
176 createdlinklist(h, t, n);
177 /*createlinklist(k, t, n);
178 singlecircle(h, k);
179 outputsinglelist(h);*/
180 outputdoublelist(h);
181 return 0;
182 }