鍊錶的建立 刪除 插入

2021-08-14 18:57:12 字數 2415 閱讀 6829

1.鍊錶的建立:

需要乙個頭指標、結點指標、尾指標即可。這裡值得注意的是,建立的過程頭指標是不能變的,而每次插入乙個節點,尾指標都要後移乙個節點(一開始把尾指標指向頭指標),如建立含有n個結點的鍊錶如下**

node *create()

else

pend->next=null;

ps=new node;

}delete ps;

mydelete(&(head));//刪除乙個結點

myinsert(head);//插入乙個結點

return head;

}

2.鍊錶的刪除:鍊錶的刪除首先要先找到你要刪除的結點。刪除分為下面兩種情況:

1刪除鏈首的步驟:

a.     p指向鏈首結點;

b.     head指向鏈首的下乙個結點

c.     刪除p指向的結點

a刪除非鏈首的結點的步驟:

a.     p指向待刪的結點

b.     pguard所指向的結點的next成員指向待刪成員的下乙個成員

c.     刪除p所指向的結點

void mydelete(node** head)//此函式為刪除結點的值為number的結點

while(pguard->next&&pguard->next->data!=number)//查詢待刪結點的前乙個結點

pguard=pguard->next;

num=pguard->next;

pguard->next=num->next;

delete num;

return ;

}

3.鍊錶的插入:

鍊錶的插入也是根據head是否改變把它分成兩種情況,插入鏈首和非鏈首,

a.     鏈首情況

1head==null;

2head!=null『

b.     非鏈首情況:

1.將插入結點指向當前結點的下乙個結點

2.將當前結點指向插入結點

注意此處的順序是重要的,如果先將當前結點的next成員修改,則失去與後繼結點的聯絡,插入結點無法找到當前節點的下一結點。

void myinsert(node*head)

if(loc==1)//如果插入在第乙個位置

node * pguard=head;

for(int i=1;i<=loc-2;i++)

pguard=pguard->next;//找出哨兵

num->next=pguard->next;//將插入結點指向當前結點的下乙個結點

pguard->next=num;//將當前結點指向插入結點

return;

}

最後放乙個可以執行的**吧

輸入:第一行輸入建立鍊錶的結點個數

第二行輸入每個結點的值

第三行輸入要刪除的值

第四行輸入要插入的值和插入的位置

輸入:一系列操作後所有結點的值

#includeusing namespace std;

struct node

;void mydelete(node** head);

void myinsert(node*head);

node *create()

else

pend->next=null;

ps=new node;

}delete ps;

mydelete(&(head));//刪除乙個結點

myinsert(head);//插入乙個結點

return head;

}void mydelete(node** head)//此函式為刪除結點的值為5的結點

while(pguard->next&&pguard->next->data!=number)//查詢待刪結點的前乙個結點

pguard=pguard->next;

num=pguard->next;

pguard->next=num->next;

delete num;

return ;

}void myinsert(node*head)

if(loc==1)//如果插入在第乙個位置

node * pguard=head;

for(int i=1;i<=loc-2;i++)

pguard=pguard->next;//找出哨兵

num->next=pguard->next;//將插入結點指向當前結點的下乙個結點

pguard->next=num;//將當前結點指向插入結點

return;

}void showlist(node* head)

cout<

鍊錶建立 插入 刪除

這兩天,拼命理解鍊錶,儘管現在理解還是不夠,但終於把長久以來一直折磨我的鍊錶用c 打出來了。還是有點小小的成就感。以下是 包括鍊錶建立 頭插法和尾插法 插入乙個位置的鍊錶 刪除乙個位置的鍊錶以及整個鍊錶的刪除。define null 0 include using namespace std int...

鍊錶的建立,刪除,插入,

定義結點 結構體型別 定義指向結點的指標變數 必須有頭指標 head,p1,p2 新建結點 malloc函式開闢記憶體 指向如果是第乙個結點,則讓頭指標head指向該結點 若不是第乙個結點,則讓上乙個結點的指標變數指向該結點 最後讓尾結點的指標變數指向null 如 list pre pre next...

鍊錶 建立 插入 刪除 查詢

include include typedef struct node int data struct node next node node createlist 建立乙個單鏈表 printf 建立乙個長度為 n的鍊錶,請輸入 n int n scanf d n node l l node mal...