單鏈表的建立 插入 刪除 遍歷

2021-06-22 18:56:14 字數 2649 閱讀 4122

首先建立結構體linklist以及全域性指標head作為表頭,具體不在贅述,除此之外本次只詳細描述尾插法,頭插法不再述說。 建立

宣告一結點q和計數器變數i;

初始化一空鍊錶p;

讓p的頭結點的指標指向null,即建立乙個帶頭結點的單鏈表;

迴圈實現後繼結點的賦值和插入。

尾插法**如下:

linklist *create()

if(head!=null)

q->next=null; //尾節點的指標域置空

}

插入單鏈表第i個資料插入結點的演算法思路:

宣告一結點p指向煉表頭結點,初始化j從1開始;

當j<1時,就遍歷鍊錶,讓p的指標向後移動,不斷指向下一結點,j累加1;

若到鍊錶末尾p為空,則說明第i個元素不存在;

否則查詢成功,在系統中生成乙個空結點s;

將資料元素e賦值給s->data;

單鏈表的插入剛才兩個標準語句;s->next = p->next;p->next = s;

返回成功。

**如下:

linklist phead;//鍊錶

int insert(linklist* pnode)

//第二種情況,pnode節點num值小於等於煉表頭結點的num值(num 鍊錶判定值)

if(pnode->num<=phead->num)

//第三種情況,迴圈查詢正確位置

p=phead;

q=phead->next;

while(q!=null)

else

break;

} //將pnde節點插入正確的位置

p->next=pnode;

pnode->next=q;

}

刪除單鏈表第i個資料刪除結點的演算法思路:

宣告結點p指向鍊錶第乙個結點,初始化j=1;

當j<1時,就遍歷鍊錶,讓p的指標向後移動,不斷指向下乙個結點,j累加1;

若到鍊錶末尾p為空,則說明第i個元素不存在;

否則查詢成功,將欲刪除結點p->next賦值給q;

單鏈表的刪除標準語句p->next = q->next;

將q結點中的資料賦值給e,作為返回;

釋放q結點。

可以這樣:p->next = p->next->next;

也可以是:q=p->next; p->next=q->next;

**如下:

linklist phead;//鍊錶

void del(int num)

//第三種情況,迴圈查詢刪除位置

q=p->next;

while(q!=null)

if(q->num>num)

return;

p=q;

q=q->next;

}}

遍歷

獲得鍊錶i個資料的演算法思路:

宣告乙個結點p指向鍊錶第乙個結點,初始化j從1開始;

當j直到鍊錶末尾p為空,輸出每個位置的資料元素。

**如下:

linklist phead;//鍊錶

void print()

}

#include #include //定義結構體型別struct node

struct node;

//用typedef定義結構體型別lnode、結構指標型別linklist

typedef struct node lnode, *linklist;

//函式原型宣告

void build(linklist head); //建立帶頭結點的單鏈表head

void disp(linklist head); //輸出帶頭結點的單鏈表head

int del(linklist head,int x); //刪除單鏈表head中元素值為x的結點

void insert(linklist head,int x); //在單鏈表head(該單鏈表按元素值公升序)中插入新元素x

void freelink(linklist head); //徹底釋放單鏈表

int main()

void build(linklist head) }

void disp(linklist head) }

//若找到,刪除,返回1,若找不到,返回-1

int del(linklist head,int x)

//若找不到值為x的元素,返回0

if(cur==null)

return 0;

//刪除cur所指結點

pre->next=cur->next;

free (cur);

return 1;

}//徹底釋放單鏈表

void freelink(linklist head)

}//在單鏈表head(該單鏈表按元素值公升序)中,插入新元素x

void insert(linklist head,int x)

//在在pre和cur之間插入新節點s

s->next=cur;

pre->next=s;

}

單鏈表的遍歷 插入 刪除

單鏈表由乙個個的節點組成,節點由兩個部分組成 資料域和指標域。資料域就是儲存這個節點的資料,這沒什麼說的。指標域存放的指標指向的是下乙個結點,正是因為指標域的存在,把存在記憶體不連續區域裡的各個結點連線了起來。單鏈表最後乙個結點的指標域為空null。頭結點與頭指標的異同 頭結點放在第一元素的結點之前...

單鏈表 建立插入刪除

建立乙個工程,在其中新增 list.h 標頭檔案,list.cpp原始檔和main.cpp原始檔。標頭檔案list.h中進行資料型別抽象 adt 宣告了乙個結構體和對應的操作,如下 ifndef list h define list h typedef struct list list 函式宣告 l...

單鏈表的建立 插入 刪除

單鏈表的初始化 建立 插入 查詢 刪除 include include typedef int elemtype 定義結點型別 typedef struct node node,linkedlist 單鏈表的初始化 linkedlist linkedlistinit l next null 將nex...