鍊錶的插入刪除合併

2021-09-09 05:41:36 字數 1432 閱讀 3622

typedef int elemtype; 定義elemtype為int型別

//鍊錶有資料域和指標域

struct lnode;

typedef lnode* linklist; 給結構體更名

//鍊錶輸出因為建立的鍊錶含有頭結點,所以新設了乙個變數p,使p=l->next;如果沒有頭結點的話,完全可以不設p

void show(linklist l)

cout/給鍊錶分配空間 ,即就是建立頭結點,給頭結點分配空間

新建立的結點,其next指標都不能懸空

輸入的時候分 頭插和尾插,頭插法:每一次在頭結點的後面插入資料 即s->next=l->next; l->next=s;兩句的順序千萬不能顛倒

尾插法:需要記錄鍊錶的尾端 即tail->next=s;tail=s; 把s掛接在尾端

在建立鍊錶的時候若l->null是沒有頭結點的,若l->next=null代表是有頭結點的/

void created_l(linklist& l,int n)

// show(l);

}

//鍊錶的插入不像順序表一樣記錄位置 ,linklist後面的&可以不用加

//找到第i個元素 因為鍊錶中沒有length,所以要時刻預防鍊錶為空的時候即 l->=null的時候

void insertlist(linklist l,int i,elemtype e) 

if(j==i)

show(l);

}

//鍊錶的刪除

void deletelist(linklist& l,int i,elemtype& e) 

if(j==i)

show(l);

}

//找到指定元素

void getelem(linklist l,elemtype e)	

}

/*兩個鍊錶的合併

la lb公升序,合成公升序的lc ,la lb比較小的接在lc的尾端,

la lb逆序,合成降序的lc,la lb比較小的插在lc頭結點的後面(頭插法可以實現逆序)

1.先建立乙個新錶

*/

void  mergelist(linklist& la,linklist& lb,linklist& lc)

else

} while(pa)

while(pb)

show(lc);

}

在main函式中呼叫

int main()

鍊錶插入刪除

include include typedef struct node node,linklist void createlist linklist head 建立鍊錶 s node malloc sizeof node s next null s data data p next s p s in...

鍊錶的插入 刪除

include include include define true 1 define false 0 define ok 1 typedef struct l list list,plist plist create list int len 建立乙個單鏈表 bool show list pli...

鍊錶的插入 刪除

雙向鍊錶的插入 第一步 首先找到插入位置,節點 s 將插入到節點 p 之前 第二步 將節點 s 的前驅指向節點 p 的前驅,即 s prior p prior 第三步 將節點 p 的前驅的後繼指向節點 s 即 p prior next s 第四步 將節點 s 的後繼指向節點 p 即 s next p...