資料結構 鍊錶

2021-08-17 21:56:25 字數 2339 閱讀 3698

上學期學鍊錶的時候掌握了點皮毛,馬馬虎虎寫了不帶頭結點的鍊錶,這學期學資料結構覺得寫**要規範點才行,於是寫了帶頭結點的鍊錶。鍊錶,顧名思義就是一串像鍊子的**串接起來,當你不夠用了,再開闢塊記憶體接在這個鍊錶的尾部,這時,就可以動態得分配記憶體大小,既不用擔心拿多了記憶體造成浪費,也不用「處心積慮」地去考慮要存的資料到底需要多少。但是,相對於順序表,鍊錶的弊端還是有的,沒錯,就是要查哪個位置的元素內容,鍊錶時間複雜度o(n),順序表只需要o(1);然而,它的優勢也是有的,在增加或者刪除節點的時候,順序表需要o(n),鍊錶則只需要o(1)。各有所長!

1 實驗目的

實現鍊錶的各種基本運算(

含鍊錶逆序的操作)

。2實驗內容

實現鍊錶的各種基本運算,

並在此基礎上設計乙個主程式完成以下功能:

(1) 

以學號分解後的數字,

如學號為2

0161100,則

通過鍵盤輸入2、

0、1、6

、1、1、0

、0生成單鏈表l

;(2) 

依次輸出鍊錶l的元素

(3) 

輸出鍊錶l的長度

(4) 

輸出鍊錶l的第

2個元素

(5) 

輸出元素

6的位置

(6) 

在第4個元素位置上插入9元素

(7) 

依次輸出鍊錶l的元素

(8) 

刪除l的第

3個元素

(9) 

依次輸出鍊錶l的元素

(10) 

對鍊錶進行逆序,再依次輸出鍊錶l的元素

(11) 

釋放鍊錶l。

#include#include//******巨集定義引數內容******

#define data_size 200

#define extend_data_size 50

#define no 0

#define ok 1

#define error -1

//******基本資料型別別名******

typedef int status;

typedef char excelelem;

typedef int numelem;

//******鍊錶資料結構******

typedef struct node

liststruct;

/******煉表表頭資訊******/

typedef struct

listhead;

//******初始化鍊錶******

liststruct *init(int *i)

}//注意*q++與(*q)++,有區別!

if(q) q->next=null;

return head;

}listhead *headinit()

/******列印表中資料內容******/

void data_cout(listhead *head)

printf("\n");

return ;

} /******列印表中local位置元素內容******/

void local(listhead* head,int local)

/******找到表中出現的字元ch的位置******/

void data_find(listhead* head,char ch)

p=p->next;

i++;

} if(!flag)

printf("未能找到%c元素!\n",ch);

return ;

}/******在第k個元素前插入乙個元素******/

void data_insert(listhead *head,int k,excelelem ch)

else

head->length++;

return ;

}/******刪除第k個元素******/

void data_delete(listhead *head,int k)

/******逆置鍊錶******/

void data_un(listhead *head)

return ;

}/******返還記憶體******/

void list_free(listhead *head)

return ;

}int main()

鍊錶寫法有挺多種的,關鍵在於怎麼定義那個結構,指向結構體的指標非常重要,有頭的節點在使用上非常便捷,同時在進行增刪改查也顯得容易。

資料結構 鍊錶

鍊錶 what 就是一張鏈式儲存的表,是一種資料結構,是基礎,所以還是不要想有什麼用。具體呢?在c中就用結構體實現物件描述,然後通過函式來實現各個基本操作 c 則用類來表述,c中的結構體就可以看成c 中的類,然後通過類封裝各個操作步驟。這些操作實現後就需要 來測試,號稱demo,就是main函式裡面...

資料結構 鍊錶

鍊錶中的資料是以節點來表示的,每個結點的構成 元素 資料元素的映象 指標 指示後繼元素儲存位置 元素就是儲存資料的儲存單元,指標就是連線每個結點的位址資料。鍊錶的結點結構 data next data域 存放結點值的資料域 next域 存放結點的直接後繼的位址 位置 的指標域 鏈域 以 結點的序列 ...

資料結構 鍊錶

一般的建立線性鍊錶有兩種 1.正序法 需要三個指標,head作為頭指標,pre作為前乙個指標,cur作為當前指標用來建立空間 2.倒序法,利用指標的插入,只需要兩個指標,不斷的往頭指標後插入新空間,不過插入的越早,離頭指標越遠,也就越後面輸出 1.線性鍊錶的建立及查詢刪除 include inclu...