鍊錶操作 20210307

2021-10-25 17:12:04 字數 1258 閱讀 6283

#include #include #include #include /*

寫乙個完整的程式,實現隨機生成20個元素的鍊錶(尾插法或頭插法)

用快慢指標快速查詢中間結點的值並顯示。

*/#define ok 1;

#define error 0;

typedef int eletype;

typedef int status;

//單鏈表結點結構

typedef struct linknode

linknode,*linklist;

/*採用尾插法建立單鏈表

*/status createlinklist(linklist* list,int num)

linknode* node = (linknode*)malloc(sizeof(linknode));//建立頭結點

*list = node;//鍊錶指向頭結點

node->next = null;//初始化空鍊錶

//設定隨機種子

srand((size_t)time(null));

for (size_t i = 0; i < num; i++)

return ok;}/*

通過指標返回單鏈表中間結點的值

*/status getmidval(linklist list,eletype* data)

//當結點為偶數個時,在倒數第二個結點無法走2個結點,就走乙個結點

else

}/* 當前快指標走完煉表時,慢指標剛好走到 中間結點。

實際上當結點數是奇數時 慢指標 走到 中間結點,

當結點數是偶數時,此時中間結點有2個,此時慢指標指向靠前那個結點。

舉個例子 1 3 5 7 9 快指標第一次走到 5 第二次走到 9 然後鍊錶走完,慢指標走2步 剛好走到 中間結點5

1 3 5 7 快指標第一次走到 5 第二次越界只走一步然後鍊錶走完,快指標走2步慢指標走1步,快指標走1步時慢指標沒有走,故慢指標 走到結點 3。

如果想 當結點個數為偶數個時,慢指標指向 中間2個結點靠後那個結點,那麼當快指標走1步時,慢指標也走1步。

*/ *data = slow->data;

return ok;}/*

展示單鏈表資料

*/void showlinklist(linklist list)

printf("\n");

}int main(int argc, char *ar**)

C 鍊錶操作總結和常見鍊錶操作

一 鍊錶的定義 鍊錶是一種動態資料結構,他的特點是用一組任意的儲存單元 可以是連續的,也可以是不連續的 存放資料元素。鍊錶中每乙個元素成為 結點 每乙個結點都是由資料域和指標域組成的,每個結點中的指標域指向下乙個結點。head是 頭指標 表示鍊錶的開始,用來指向第乙個結點,而最後乙個指標的指標域為n...

LinkList鍊錶操作

以下的c 類linklist實現了線性鍊錶的一般操作。可以直接在其他的程式中直接建立它的物件,其中線性表中的資料在此為整型,具體應用的時候可以適當的修改,並可以在此基礎上繼續封裝特定的功能。標頭檔案 linklist.h typedef struct lnode lnode,plinklist cl...

鍊錶的操作

鍊錶是資料結構中的乙個重要組成部分,對鍊錶操作的熟練度怎麼要求都不過分。只有部分核心 主要內容 1 鍊錶的建立 2 鍊錶的釋放 3 鍊錶的查詢 4 鍊錶中節點的插入 5 鍊錶中節點的刪除 6 鍊錶的反轉 7 兩個鍊錶的連線 define max 15 節點宣告 struct list typedef...