抽象数据类型Triplet的C语言实现
生活随笔
收集整理的這篇文章主要介紹了
抽象数据类型Triplet的C语言实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 #define ERROR 0
5 #define OK 1
6
7 typedef int Status;
8 typedef int Elemtype;
9 typedef Elemtype * Triplet;
10
11 Status InitTriplet(Triplet *t, Elemtype v0, Elemtype v1, Elemtype v2){ //三元組t的初始化
12
13 *t = (Elemtype *)malloc(3 * sizeof(Elemtype));
14 if (!*t)
15 exit(-1);
16
17 (*t)[0] = v0;
18 (*t)[1] = v1;
19 (*t)[2] = v2;
20
21 return OK;
22 }
23
24 Status DestroyTriplet(Triplet *t){//三元組t的釋放 int* t=t
25
26 free(*t);
27 *t = NULL;
28 return OK;
29 }
30
31 Status Get(Triplet t, int i, Elemtype *e){//得到三元組t中的某個元素
32 if (i<1 || i>3 || t == NULL)
33 return ERROR;
34 *e = t[i - 1];
35 //printf("三元組中第%d個元素為%d\n",(i+1),t[i]);
36 return OK;
37 }
38
39 Status Put(Triplet t, int i, Elemtype e){
40 if (t == NULL)
41 return ERROR;
42 if (i<1 || i>3 || t == NULL)
43 return ERROR;
44 t[i] = e;
45 return OK;
46 }
47
48 Status Show(Triplet t){
49 if (t == NULL)
50 return ERROR;
51 for (int i = 0; i < 3; i++)
52 printf("第%d個元素為%d\n", i + 1, t[i]);
53 return OK;
54 }
55
56 Status isAscending(Triplet t){
57 if (t == NULL)
58 return ERROR;
59 return(t[0] <= t[1] && t[1] <= t[2]);
60 }
61
62 Status isDescending(Triplet t){
63 if (t == NULL)
64 return ERROR;
65 return(t[0] >= t[1] && t[1] >= t[2]);
66 }
67
68 Status Max(Triplet t, Elemtype *e){
69 if (t == NULL)
70 return ERROR;
71 *e = ((t[0] > t[1] ? t[0] : t[1])>t[2]) ? (t[0] > t[1] ? t[0] : t[1]) : t[2];
72 return OK;
73 }
74
75 Status Min(Triplet t, Elemtype *e){
76 if (t == NULL)
77 {
78 printf("t為空\n");
79 return ERROR;
80 }
81 *e = ((t[0] < t[1] ? t[0] : t[1])<t[2]) ? (t[0] < t[1] ? t[0] : t[1]) : t[2];
82 return OK;
83 }
84
85 void main(){
86 Status i;//程序狀態
87 Elemtype p;//用于主函數和子函數的內存共享
88 Elemtype max;
89 Elemtype min;
90 Triplet t;
91 int di = 1;
92 i = InitTriplet(&t, 0, 1, 2);
93 if (i){
94 i = Get(t, di, &p);
95 }
96 printf("三元組中第%d個元素為%d\n", di, p);
97 if (i){
98 i = Put(t, di, 5);
99 }
100 if (i){
101 i = Show(t);
102 }
103
104 if (isAscending(t))
105 printf("三元組中的元素是按升序排列\n");
106 else
107 printf("三元組中的元素不是按升序排列\n");
108
109 if (isDescending(t))
110 printf("三元組中的元素是按降序排列\n");
111 else
112 printf("三元組中的元素不是按降序排列\n");
113
114 if (i){
115 i = Max(t, &max);
116 }
117 printf("三元組中元素最大的元素為%d\n", max);
118
119 if (i){
120 DestroyTriplet(&t);
121 }
122
123
124 if (i){
125 i = Min(t, &min);
126 }
127
128 printf("三元組中元素最小的元素為%d\n", min);//t所指向的內存空間已被釋放,min中存放著未初始化的垃圾數字
129 }
?
轉載于:https://www.cnblogs.com/gangtiexia/p/4756057.html
總結
以上是生活随笔為你收集整理的抽象数据类型Triplet的C语言实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GitHub上值得关注的iOS开源项目
- 下一篇: UI篇