1: #include <stdio.
h>
2:
3: #define MAX 100
4:
5: /* Function prototypes */
6: int insertbegin(int listdata[], int *listsize, int data);
7: int insertend(int listdata[], int *listsize, int data);
8: int insertmiddle(int listdata[], int *listsize, int pos, int data);
9:
10: int deletebegin(int listdata[], int *listsize);
11: int deleteend(int listdata[], int *listsize);
12: int deletemiddle(int listdata[], int *listsize, int pos);
13:
14: int getdata(int listdata[], int listsize, int pos, int *data);
15: void traverse(int listdata[], int listsize);
16: int search(int listdata[], int listsize, int data);
17:
18: int main()
19: {
20: int listdata[MAX];
21: int listsize = 0;
22: int choice;
23: int data, pos, result;
24:
25: while (1)
26: {
27: printf("\n----- ARRAY LIST MENU -----\n");
28: printf("1. Insert Begin\n");
29: printf("2. Insert End\n");
30: printf("3. Insert Middle\n");
31: printf("4. Delete Begin\n");
32: printf("5. Delete End\n");
33: printf("6. Delete Middle\n");
34: printf("7. Get Data\n");
35: printf("8. Traverse\n");
36: printf("9. Search Data\n");
37: printf("0. Exit\n");
38:
39: printf("Enter your choice: ");
40: scanf("%d", &choice);
41:
42: switch (choice)
43: {
44: case 1:
45: printf("Enter data: ");
46: scanf("%d", &data);
47:
48: result = insertbegin(listdata, &listsize, data);
49:
50: if (result == 1)
51: printf("Data inserted successfully.\n");
52: else
53: printf("List is full.\n");
54: break;
55:
56: case 2:
57: printf("Enter data: ");
58: scanf("%d", &data);
59:
60: result = insertend(listdata, &listsize, data);
61:
62: if (result == 1)
63: printf("Data inserted successfully.\n");
64: else
65: printf("List is full.\n");
66: break;
67:
68: case 3:
69: printf("Enter position: ");
70: scanf("%d", &pos);
71:
72: printf("Enter data: ");
73: scanf("%d", &data);
74:
75: result = insertmiddle(listdata, &listsize, pos, data);
76:
77: if (result == 1)
78: printf("Data inserted successfully.\n");
79: else
80: printf("Invalid position or list is full.\n");
81: break;
82:
83: case 4:
84: result = deletebegin(listdata, &listsize);
85:
86: if (result == 1)
87: printf("First element deleted.\n");
88: else
89: printf("List is empty.\n");
90: break;
91:
92: case 5:
93: result = deleteend(listdata, &listsize);
94:
95: if (result == 1)
96: printf("Last element deleted.\n");
97: else
98: printf("List is empty.\n");
99: break;
100:
101: case 6:
102: printf("Enter position: ");
103: scanf("%d", &pos);
104:
105: result = deletemiddle(listdata, &listsize, pos);
106:
107: if (result == 1)
108: printf("Element deleted successfully.\n");
109: else
110: printf("Invalid position or list is empty.\n");
111: break;
112:
113: case 7:
114: printf("Enter position: ");
115: scanf("%d", &pos);
116:
117: result = getdata(listdata, listsize, pos, &data);
118:
119: if (result == 1)
120: printf("Data = %d\n", data);
121: else
122: printf("Invalid position.\n");
123: break;
124:
125: case 8:
126: traverse(listdata, listsize);
127: break;
128:
129: case 9:
130: printf("Enter data to search: ");
131: scanf("%d", &data);
132:
133: result = search(listdata, listsize, data);
134:
135: if (result != -1)
136: printf("Data found at position %d.\n", result);
137: else
138: printf("Data not found.\n");
139: break;
140:
141: case 0:
142: return 0;
143:
144: default:
145: printf("Invalid choice.\n");
146: }
147: }
148:
149: return 0;
150: }
151:
152:
153: /* Insert at beginning */
154: int insertbegin(int listdata[], int *listsize, int data)
155: {
156: int i;
157:
158: if (*listsize >= MAX)
159: return 0;
160:
161: for (i = *listsize; i > 0; i--)
162: listdata[i] = listdata[i - 1];
163:
164: listdata[0] = data;
165: (*listsize)++;
166:
167: return 1;
168: }
169:
170:
171: /* Insert at end */
172: int insertend(int listdata[], int *listsize, int data)
173: {
174: if (*listsize >= MAX)
175: return 0;
176:
177: listdata[*listsize] = data;
178: (*listsize)++;
179:
180: return 1;
181: }
182:
183:
184: /* Insert at given position */
185: int insertmiddle(int listdata[], int *listsize, int pos, int data)
186: {
187: int i;
188:
189: if (*listsize >= MAX || pos < 0 || pos > *listsize)
190: return 0;
191:
192: for (i = *listsize; i > pos; i--)
193: listdata[i] = listdata[i - 1];
194:
195: listdata[pos] = data;
196: (*listsize)++;
197:
198: return 1;
199: }
200:
201:
202: /* Delete from beginning */
203: int deletebegin(int listdata[], int *listsize)
204: {
205: int i;
206:
207: if (*listsize == 0)
208: return 0;
209:
210: for (i = 0; i < *listsize - 1; i++)
211: listdata[i] = listdata[i + 1];
212:
213: (*listsize)--;
214:
215: return 1;
216: }
217:
218:
219: /* Delete from end */
220: int deleteend(int listdata[], int *listsize)
221: {
222: if (*listsize == 0)
223: return 0;
224:
225: (*listsize)--;
226:
227: return 1;
228: }
229:
230:
231: /* Delete from given position */
232: int deletemiddle(int listdata[], int *listsize, int pos)
233: {
234: int i;
235:
236: if (*listsize == 0 || pos < 0 || pos >= *listsize)
237: return 0;
238:
239: for (i = pos; i < *listsize - 1; i++)
240: listdata[i] = listdata[i + 1];
241:
242: (*listsize)--;
243:
244: return 1;
245: }
246:
247:
248: /* Get data from given position */
249: int getdata(int listdata[], int listsize, int pos, int *data)
250: {
251: if (pos < 0 || pos >= listsize)
252: return 0;
253:
254: *data = listdata[pos];
255:
256: return 1;
257: }
258:
259:
260: /* Traverse the list */
261: void traverse(int listdata[], int listsize)
262: {
263: int i;
264:
265: if (listsize == 0)
266: {
267: printf("List is empty.\n");
268: return;
269: }
270:
271: printf("List elements: ");
272:
273: for (i = 0; i < listsize; i++)
274: printf("%d ", listdata[i]);
275:
276: printf("\n");
277: }
278:
279:
280: /* Search data */
281: int search(int listdata[], int listsize, int data)
282: {
283: int i;
284:
285: for (i = 0; i < listsize; i++)
286: {
287: if (listdata[i] == data)
288: return i;
289: }
290:
291: return -1;
292: }