#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...