嚴蔚敏版《資料結構》第二章線性表的演算法C語言實現

2021-06-09 22:05:27 字數 3601 閱讀 3551

首先,今天是中秋,明天是國慶,在這說聲節日快樂啊。

說點題外話,今天出去走了走,看到藥店就進去稱體重了。尼瑪,竟然輕了4斤,本來就是100剛出頭,現在倒好,直接掉下100了。我想這可能是因為最近天天熬夜,而且最近學校還規定天天要去早讀(直接導致睡眠不足),直到過了英語4級。唉,大一時不能考,不知今年12月能否考過啊。所以說各位還要注意休息啊,記得要早點休息。昨天晚上就11點後就因為寫這個**直到一點才睡的。可能因為當時頭腦有點暈,也許**會有點亂或者瑕疵說著遺漏什麼的,作為新人的我歡迎各位指出來哦。

看到書上的偽**,就有把它搞成c語言的衝動。也許是還不成熟吧,別人都是直接看偽**的,還有人會寫出偽**,可我還沒達到這種境界。所以只有用c語言實現它了。

其實在寫之前也看了別人寫的一些之類的,所以我的算是山寨吧,哈哈,不過和書上的偽**也差不多了。

好了,不再多說什麼了,下面就是**了,有點長。

code:

#include#include#define true 1

#define false 0

#define ok 1

#define error 0

#define overflow -2

#define list_init_size 10

#define listincrement 4

typedef int status;

typedef int elemtype;

typedef struct

sqlist;

status initlist_sq(sqlist *l); //初始化建立線性表

void destroylist_sq(sqlist *l); //銷毀線性表

void clearlist_sq(sqlist *l); //置空線性表

status listempty_sq(sqlist *l); //判斷線性表是否為空

status listlength_sq(sqlist *l); //獲取線性表的長度(元素個數)

/*獲取線性表第i個個位置的值*/

status getlem(sqlist *l, int i, elemtype *e);

/*求線性表的前繼元素*/

status priorelem(sqlist *l, elemtype cur_e, elemtype *pre_e);

/*求線性表的後繼元素*/

status nextelem(sqlist *l, elemtype cur_e, elemtype *next_e);

/*在第i個位置插入元素e*/

status listinsert_sq(sqlist *l, int i, elemtype e);

/*刪除線性表的第i個元素*/

status listdelete_sq(sqlist *l, int i, elemtype *e);

/*遍歷輸出順序表中所有元素*/

status listtransver_sq(sqlist *l);

/*對順序表中元素進行排序*/

void listsort_sq(sqlist *l);

/*倒置順序表中所有元素*/

void listinvert_sq(sqlist *l);

/*初始化線性表*/

status initlist_sq(sqlist *l)

l->length = 0; //線性表(空表)的長度為0

l->listsize = list_init_size; //表的初始儲存容量為list_init_size

return ok;

}/*銷毀線性表*/

void destroylist_sq(sqlist *l)

}/*置空線性表*/

void clearlist_sq(sqlist *l)

/*判斷線性表是否為空*/

status listempty_sq(sqlist *l)

/*獲取線性表的長度*/

status listlength_sq(sqlist *l)

/*獲取線性表的第i個元素的值*/

status getlem(sqlist *l, int i, elemtype *e)

if(l->elem == null)

*e = l->elem[i-1];

return ok;

}/*求線性表的前繼元素*/

status priorelem(sqlist *l, elemtype cur_e, elemtype *pre_e)

i++;

}return error;

}/*求線性表中的後繼元素*/

status nextelem(sqlist *l, elemtype cur_e, elemtype *next_e)

i++;

}return error;

}status listinsert_sq(sqlist *l, int i, elemtype e)

elemtype *q = &(l->elem[i-1]); //q為插入位置

elemtype *p; //是p指向最後乙個元素

for(p = &(l->elem[l->length - 1]); p >=q; p--)

*(p+1) = *p;

*q = e; //插入e

l->length ++;

return ok;

}/*刪除線性表的第i個元素*/

status listdelete_sq(sqlist *l, int i, elemtype *e)

elemtype *p = &(l->elem[i-1]); //p為被刪除元素的位置

*e = *p; //被刪除的元素的值賦給e

elemtype *q = l->elem + l->length - 1; //表尾元素的位置

for(p = p+1; p <= q; p++)

*(p-1) = *p; //被刪除元素之後的元素左移

l->length --;

return ok;

}/*遍歷輸出順序表中所有元素*/

status listtransver_sq(sqlist *l)

else

return ok;

}/*對順序表中元素進行排序*/

void listsort_sq(sqlist *l)

tmp = l->elem[i];

l->elem[i] = l->elem[max];

l->elem[max] = tmp;

}} /*選擇排序法*/

/*倒置順序表中所有元素*/

void listinvert_sq(sqlist *l)

}int main()

執行結果:

資料結構嚴蔚敏 第二章 線性表

2.4 一元多項式的表示及相加 總結資料結構嚴蔚敏 第二章 線性表 學習的書籍為 資料結構 c語言版 清華大學出版社 該章節為書中的第 18頁 43頁。從第2章至第4章討論的 線性表 棧 佇列 串和陣列 都屬於線性結構。線性結構的基本特點是除第乙個元素無直接前驅,最後乙個元素無直接後繼之外,其他每個...

嚴蔚敏資料結構筆記 第二章線性表

第二章 線 性 表 1.線性表 是由 n n 0 個資料元素組成的有限序列。2.線性表的基本運算有 1 initlist l 構造空表,即表的初始化 2 listlength l 求表的結點個數,即表長 3 getnode l,i 取表中第 i個結點,要求 1 i listlength l 4 lo...

資料結構 嚴蔚敏版第二章筆記

準備考研了,我們學校使用的教材不是這一本,大概整理一下。共勉 線性結構的特點 在資料元素的非空有限集合中 存在唯一的乙個被稱為 第乙個 的資料元素 存在唯一的乙個被稱為 最後乙個 的資料元素 除了第乙個之外,集合中的每個資料元均只有乙個前驅 除了最後乙個之外,集合中的每乙個元素均只有乙個後繼 2.1...