上學期學鍊錶的時候掌握了點皮毛,馬馬虎虎寫了不帶頭結點的鍊錶,這學期學資料結構覺得寫**要規範點才行,於是寫了帶頭結點的鍊錶。鍊錶,顧名思義就是一串像鍊子的**串接起來,當你不夠用了,再開闢塊記憶體接在這個鍊錶的尾部,這時,就可以動態得分配記憶體大小,既不用擔心拿多了記憶體造成浪費,也不用「處心積慮」地去考慮要存的資料到底需要多少。但是,相對於順序表,鍊錶的弊端還是有的,沒錯,就是要查哪個位置的元素內容,鍊錶時間複雜度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...