1 //------------------------
2 #include<iostream>
3 using namespace std;
4 int main()
5 {
6 int n,m,i,j;
7 cin>>m>>n;
8 int **a;
9 a=new int*[m];
10 for(i=0;i<n;i++)
11 a[i]=new int[m];
12 cout<<"请输入数:";
13 cin>>a[2][3];
14 cout<<a[2][3]<<'\n';
15 delete []a;
16 return 0;
17 }
18 //------------------------------
19 // practice32.cpp : Defines the entry point for the console application.
20 //
21
22 #include<malloc.h> // malloc()等
23 #include<stdlib.h> // atoi()
24 #include <stdio.h>
25
26 typedef int ElemType;
27
28 // 线性表的单链表存储结构
29 struct LNode
30 {
31 ElemType data;
32 LNode *next;
33 };
34 typedef LNode *LinkList; // 另一种定义LinkList的方法
35
36 // 操作结果:构造一个空的线性表L
37 int InitList(LinkList &L)
38 {
39 L=(LinkList)malloc(sizeof(LNode)); // 产生头结点,并使L指向此头结点
40 if(!L) // 存储分配失败
41 return 0;
42 L->next=NULL; // 指针域为空
43 return 1;
44 }
45 // 正位序(插在表尾)输入n个元素的值,建立带表头结构的单链线性表
46 void CreateList2(LinkList &L,int n)
47 {
48 int i;
49 LinkList p,q;
50 L=(LinkList)malloc(sizeof(LNode)); // 生成头结点
51 L->next=NULL;
52 q=L;
53 printf("请输入%d个数据\n",n);
54 for(i=1;i<=n;i++)
55 {
56 p=(LinkList)malloc(sizeof(LNode));
57 scanf("%d",&p->data);
58 q->next=p;
59 q=q->next;
60 }
61 p->next=NULL;
62 }
63
64 int ListTraverse(LinkList L)
65 {
66 LinkList p;
67 p = L->next;
68 while(p)
69 {
70 printf("%d ",p->data);
71 p = p->next;
72 }
73 printf("\n");
74 return 1;
75 }
76
77 int main(int argc, char* argv[])
78 {
79 int n=5;
80 LinkList La;
81
82 CreateList2(La,n); // 正位序输入n个元素的值
83 printf("La="); // 输出链表La的内容
84 ListTraverse(La);
85
86 return 0;
87 }
88 //----------------------------
89 #include "stdio.h"
90 #include "stdlib.h"
91 typedef struct LNode
92 {int data;
93 int num;
94 struct LNode *next;
95 }LNode,*linklist;
96 linklist creat(int n)
97 {/*构造一个长度为n的无头节点的循环链表,并返回指向最后一个节点的指针*/
98 linklist head,s;
99 int i;
100 s=head=(linklist)malloc(sizeof(LNode));
101
102 for(i=1;i<n;i++)
103 {s->data=i;
104 printf("num%d: ",i);
105 scanf("%d",&(s->num));/*输入第i个人的密码*/
106 while(s->num<=0)
107 {/*如果输入的s->num小于等于0,要求重新输入*/
108 printf("请重新输入\nnum%d: ",i);
109 scanf("%d",&s->num);
110 }
111 s->next=(linklist)malloc(sizeof(LNode));
112 s=s->next;
113 }
114 s->data=i;
115 printf("num%d: ",i);
116 scanf("%d",&(s->num));
117 s->next=head;
118 return(s);
119 }
120
121 linklist find(int m,linklist s) //找到当前元素后面第m个元素
122 {
123 int i;
124 for(i=0;i<m-1;i++)
125 s=s->next;
126 return(s);
127 }
128
129 void print(int &m,int &n,linklist &s)
130 {
131 linklist p;
132 s=find(m,s);
133 printf("%d ",s->next->data);/*输出找到的元素*/
134 m=s->next->num;/*将此元素从链表中删除,并释放此节点*/
135 p=s->next;
136 s->next=s->next->next;
137 free(p);
138 --n;
139 }
140
141
142 void main()
143 {/*解决约舍夫问题的主函数*/
144 int n,m;
145 printf("type in n :");
146 scanf("%d",&n);/*输入n*/
147 while(n<=0)
148 {/*如果输入的n小于等于0,要求重新输入*/
149 printf("please type n in again \ntype in n :");
150 scanf("%d",&n);
151 }
152 printf("type in m :");
153 scanf("%d",&m);/*输入m*/
154 while(m<0)
155 {/*如果输入的m小于0,要求重新输入*/
156 printf("please type m in again \ntype in m :");
157 scanf("%d",&m);
158 }
159 linklist s;
160 s=creat(n);/*创建无头节点的循环链表,返回指向最后一个元素的指针*/
161 printf("the sequence is ");
162 print(m,n,s);//输出第一个出列的元素
163 while(n)
164 {
165 print(m,n,s);//输出剩余出列的元素
166 }
167 printf("\n");
168 }
169 //-----------------------------------------
170 void initlist(sqlist &sq)
171 {
172 sq.len = 0;
173 }
174
175 int getlen(sqlist sq)
176 {
177 return sq.len;
178 }
179
180 int getelem(sqlist sq, int i)
181 {
182 return sq.data[i - 1];
183 }
184
185 int locate(sqlist sq, ElemType x)
186 {
187 int i = 0;
188 while (sq.data[i] != x)
189 i++;
190 if (i > sq.len)
191 return 0;
192 else
193 return 1+i;
194 }
195 int inselem(sqlist&sq, ElemType x, int i)//删除i这个节点
196 {
197 int j;
198 if (i<1 || i>sq.len + 1)//不符
199 return 0;
200 for (j = sq.len; j > i; j--)
201 sq.data[j] = sq.data[j - 1];//data[i-1]代表i处元素的值,data[sq.len]代表最大处的值
202 sq.data[i - 1] = x;
203 sq.len++;
204 return 1;
205 }
206
207 int delelem(sqlist&sq, int i)//前移1位
208 {
209 int j;
210 if (i<1 || i>sq.len)
211 return 0;
212 for (j = i; j < sq.len; j++)
213 sq.data[j - 1] = sq.data[j];
214 sq.len--;
215 return 1;
216 }
217
218 void displist(sqlist sq)
219 {
220 int i;
221 for (i = 1; i < sq.len; i++)
222 cout << sq.data[i - 1] << " ";
223 cout << endl;
224 }
225 //-------------------------------
226 typedef struct node
227 {
228 ElemType data;
229 struct node* next;
230 }slink;
231
232 typedef struct node
233 {
234 ElemType data;
235 struct node *prior, *next;
236 };
237
238 void initlist(slink *&sq)
239 {
240 sq = (slink*) malloc(sizeof(slink));
241 sq->next = NULL;
242 }
243
244 int getlen(slink*sq)
245 {
246 int i = 0;
247 slink*p = sp->next;//sq的下一位,p初始时指向第一个结点,sq为头结点
248 while (p != NULL)
249 {
250 i++;
251 p = p->next;
252 }
253 return i;
254 }
255
256 slink*getelem(slink*sq, int i)
257 {
258 int j = 1;
259 slink*q = sq->next;//sq的下一位,p初始时指向第一个结点,sq为头结点
260 if (i<1 || i>getlen(sq))
261 return NULL;
262 while (j < i)
263 {
264 p = p->next;
265 j++;
266 }
267 return p;
268 }
269
270 slink*locate(slink*sq, ElemType x)
271 {
272 slink*p = sq->next;
273 while (p != NULL && p->data != x)
274 p = p->next;
275 return p;
276 }
277
278 int