데이터 구조 --- 동적 배열 [1]
23474 단어 데이터 구조
1 #include <stdio.h>
2 #include <stdlib.h>
3
4
5 #define bool int
6 #define true 1
7 #define false 0
8
9 /* struct Arr */
10 struct Arr
11 {
12 int count; //
13 int length; //
14 int *pHead; //
15 };
16
17
18 /* */
19 void init_arr(struct Arr *array1, int length);
20 bool is_empty(struct Arr *array1);
21 bool is_full(struct Arr *array1);
22 void show_arr(struct Arr *array1);
23 bool append_arr(struct Arr *array1, int val);
24 void inversion(struct Arr *array1);
25 void insert_arr(struct Arr *array1, int pos, int val);
26 void sort_arr(struct Arr *array1);
27
28
29
30 /* */
31 int main(void)
32 {
33 struct Arr array1; // struct Arr array1
34 int val = 0;
35 int pos = 0;
36 array1.pHead = NULL; // pHead NULL !
37 init_arr(&array1, 3);
38 append_arr(&array1, 1);
39 append_arr(&array1, 3);
40 insert_arr(&array1, 1, 2);
41 show_arr(&array1);
42 sort_arr(&array1);
43 show_arr(&array1);
44 return 0;
45 }
46
47
48 /* */
49 void init_arr(struct Arr *array1, int length)
50 {
51 array1->pHead = (int *)malloc(sizeof(struct Arr) * length);
52 if (NULL == array1->pHead)
53 {
54 printf(" .
");
55 exit(1);
56 }
57 array1->length = length;
58 array1->count = 0;
59 }
60
61 /* */
62 bool is_empty(struct Arr *array1)
63 {
64 if (0 == array1->count)
65 return true;
66 return false;
67 }
68
69
70 /* */
71 bool is_full(struct Arr *array1)
72 {
73 if (array1->count == array1->length)
74 return true;
75 return false;
76 }
77
78
79 /* */
80 void show_arr(struct Arr *array1)
81 {
82 int i;
83 if ( 0 == array1->count)
84 printf(" .
");
85 for (i = 0; i < array1->count; i++)
86 printf("%d\t", array1->pHead[i]);
87 printf("
");
88 }
89
90 /* */
91 bool append_arr(struct Arr *array1, int val)
92 {
93 int i;
94 if ( is_full(array1) )
95 {
96 printf(" .
");
97 return false;
98 }
99 i = array1->count;
100 (array1->pHead)[i] = val;
101 array1->count++;
102 return true;
103 }
104
105 /* */
106 void inversion(struct Arr *array1)
107 {
108 int i = array1->count - 1;
109 int j = 0;
110 int *temp = (int *)malloc(sizeof(int) * array1->count);
111 if ( NULL == temp )
112 {
113 printf("
");
114 exit(1);
115 }
116 if ( is_empty(array1) )
117 {
118 printf(" .
");
119 return;
120 }
121 for (; i >= 0; i--)
122 {
123 printf("%d\t", array1->pHead[i]);
124 temp[j] = array1->pHead[i];
125 j++;
126 }
127 printf("
");
128 free(temp);
129 }
130
131
132 /* */
133 void insert_arr(struct Arr *array1, int pos, int val)
134 {
135 int i = pos;
136 int j = 0;
137 int *temp = (int *)malloc(sizeof(int) * (array1->length - pos + 1));
138 if (NULL == temp)
139 {
140 printf(" .
");
141 exit(1);
142 }
143 for (; i <= array1->length; ++i)
144 {
145 temp[j] = array1->pHead[i-1];
146 j++;
147 }
148 j = 0;
149 array1->pHead[pos-1] = val;
150 for (i = pos; i < array1->length; ++i)
151 {
152 array1->pHead[i] = temp[j];
153 j++;
154 }
155 free(temp);
156 array1->count++;
157 }
158
159
160 /* */
161 void sort_arr(struct Arr *array1)
162 {
163 int i, j, temp;
164 for (i = 0; i < array1->count; i++)
165 {
166 for (j = 0; j < array1->count - 1; j++)
167 {
168 if (array1->pHead[j] > array1->pHead[j+1])
169 {
170 temp = array1->pHead[j];
171 array1->pHead[j] = array1->pHead[j+1];
172 array1->pHead[j+1] = temp;
173 }
174 }
175 }
176 }
시간 이 많이 걸 렸 어 요. 자신 감 을 주 려 고 했 는데... T. T.
파 이 팅.. 데이터 구 조 를 열심히 배 워 서...
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.