資料結構專案報告
專案題目:三元組
專案成員:
日期:2023年4月1號
1. 題目與要求
1.1問題提出
詳細敘述本專案所要實現的問題是建立乙個三元組並且實現一些有關三元組的操作。
1.2 本專案涉及的知識點
指標,數值,函式的呼叫
1.3功能要求
1建立乙個三元組並且給它們賦值。
2如果三元組存在,把三元組釋放並且賦空。
3根據給的乙個位置,來找出三元組裡面這個位置的值並且返回。
4判斷三元組裡面的值是否按遞增排列.
5判斷三元組裡面的值是否按遞減排列。
6求三元組裡面數值的最大值.
7求三元組裡面數值的最小值。
8根據給的乙個位置,改變三元組這個位置的值。
2. 功能設計
2.1總體設計
運用函式呼叫的方式將整個程式連線起來,使其變得完整,具體見**。
2.2詳細設計
本程式可分八個小模組。第1個小模組實現建立乙個三元組並且給它們賦值;第2個小模組實現如果三元組存在,把三元組釋放並且賦空;第3個小模組實現根據給的乙個位置,來找出三元組裡面這個位置的值並且返回;第個4小模組實現判斷三元組裡面的值是否按遞增排列;第5個小模組實現判斷三元組裡面的值是否按遞減排列;第個6小模組實現求三元組裡面數值的最大值;第7個小模組實現求三元組裡面數值的最小值;第8個小模組實現根據給的乙個位置,改變三元組這個位置的值。
模組一:建立乙個三元組並且給它們賦值,函式為status inittriplet(triplet *t,elemtype v1,elemtype v2,elemtype v3)
t 是個整形二級指標,v1,v2,v3整形變數,通過(elemtype *)malloc(3*sizeof(elemtype))申請乙個連續的空間給(*t),然後v1,v2,v3的值分別賦給它們。
模組二:如果三元組存在,把三元組釋放並且賦空,函式為status destroytriplet(triplet *t) t 是個整形二級指標,如果(*t)存在,則通過free ()把它釋放並且把它賦空。
模組三:根據給的乙個位置,來找出三元組裡面這個位置的值並且返回,函式為status get(triplet t,int i,elemtype *e)
t 是個整形二級指標,整形i 表示那個位置,*e表示要返回i 位置的值,把(*t)【i-1】賦給*e。 模組四:判斷三元組裡面的值是否按遞增排列,函式為status isascending(triplet t)
t 是個整形二級指標,判斷它們乙個是否比乙個大。
模組五:判斷三元組裡面的值是否按遞減排列,函式為status isdescending(triplet t)
t 是個整形二級指標,判斷它們乙個是否比乙個小。
模組六:求三元組裡面數值的最大值,函式為status max(triplet t,elemtype *e)
t 是個整形二級指標,*e是用來返回最大的值,通過乙個乙個的比較來實現
模組七:求三元組裡面數值的最小值,函式為status min(triplet t,elemtype *e)
t 是個整形二級指標,*e是用來返回最小的值,通過乙個乙個的比較來實現
模組八:根據給的乙個位置,改變三元組這個位置的值,函式為status put(triplet t,int i,elemtype e)
t 是個整形二級指標,整形i 表示那個位置,*e表示要賦值給i 位置的值,把*e賦給(*t)【i-1】。
3. 專案總結與思考
完成這個專案,讓我發現自己很容易犯一些小錯誤,例如用乙個指標表示它所指向的值,容易丟失*,通過這專案讓我了解二級指標的使用。
源程式如下:
#include
#include
#include
#define overflow -2
#define ok 1
#define error 0
typedef int status;
typedef int elemtype;
typedef int *triplet;
status inittriplet(triplet *t,elemtype v1,elemtype v2,elemtype v3)
(*t)=(elemtype *)malloc(3*sizeof(elemtype));
if(!(*t)) exit(overflow);
(*t)[0]=v1;(*t)[1]=v2;(*t)[2]=v3;
return ok;
status destroytriplet(triplet *t)
free((*t));
(*t)=null;
return ok;
status get(triplet t,int i,elemtype *e)
if(i3) return error;
*e=t[i-1];
return ok;
status put(triplet t,int i,elemtype e)
if(i3) return error;
t[i-1]=e;
return ok;
status isascending(triplet t)
return(t[0]
status isdescending(triplet t)
return (t[0]>=t[1])&&(t[1]>=t[2]);
status max(triplet t,elemtype *e)
*e=(t[0]>=t[1])?((t[0]>=t[2])?t[0]:t[2]):((t[1]>=t[2])?t[1]:t[2]); return ok;
status min(triplet t,elemtype *e)
*e=(t[0]
int main()
triplet a;
elemtype e,t,k,j,i;
inittriplet(&a,1,2,3);
get(a,2,&e);
printf("%d\n",e);
put(a,2,4);
printf("%d\n",a[1]);
t=isascending(a);
printf("%d\n",t); k=isdescending(a); printf("%d\n",k); max(a,&j);
printf("%d\n",j); min(a,&i);
printf("%d\n",i); destroytriplet(&a); return 0;
資料結構三元組實驗報告 三元組實驗報告 doc
三元組實驗報告 三元組實驗報告 實驗報告 3元組的實現 一 問題描述 設計乙個實現3元組基本操作的c語言程式 1 實現三元組的構造 取值 修改 有序判斷 最大值 最小值和銷毀 列印等基本操作 2 自行設計選單介面,美觀 實用性強 二 實驗內容 destroytriplet 銷毀乙個三元組 gettr...
資料結構之三元組
三元組s1 a,b,c 元素型別可自定義 elemtype 下面直接貼 triple.h 標頭檔案 ifndef trip h define trip h define error 1 可更改三元組的資料型別 typedef int elem type 三元組結構體定義 typedef struct...
資料結構實驗報告 資料結構實驗報告
使用c語言中的陣列,實現線性表中的順序結構儲存的查詢 刪除操作。1 初始線性表通過陣列 迴圈 scanf語句實現輸入任意個整數。2 刪除操作的實現,任意輸入乙個要刪除的整數,找到這個元素,將此元素之後的所有元素逐個前移一位,實現刪除操作。3 要求以上2步操作可以重複執行。4 例如 刪除操作執行結果大...