程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 抽象數據類型Triplet的C語言實現,抽象數據類型triplet

抽象數據類型Triplet的C語言實現,抽象數據類型triplet

編輯:關於C語言

抽象數據類型Triplet的C語言實現,抽象數據類型triplet


  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 }

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved