單鏈表(合併單鏈表)

2021-07-31 04:37:06 字數 2232 閱讀 6130

單鏈表遍歷:

單鏈表遍歷是從單鏈表頭指標head開始訪問,沿著next指標所指示的方向依次訪問每乙個結點,且每個結點只能訪問依次,直到最後乙個結點為止。遍歷時注意,不要改變head指標的指向。因此一般設定另外的乙個指標變數如p,p從head開始依次訪問乙個結點,直到鍊錶結束,此時p = null,完成依次遍歷

單鏈表插入:

插入結點是將值為x的新結點插入到單鏈表的第i個結點位置上,在插入時,需要先找到第i-1個結點,再在其後插入新結點。假設要在單鏈表的倆個資料域為a何b的結點之間插入乙個資料域為x的結點,已知p指向資料域為a的結點,q指向資料域為x的結點,為了插入結點*q,需要修改結點*p中的指標域,使其指向結點*q,而結點*q的指標域應該指向資料域為b的結點。

單鏈表刪除操作:

單鏈表的刪除操作是將單鏈表的第i個結點刪除。先在單鏈表中找到第i-1個結點,再刪除其後的結點。若要刪除結點b,僅需要修改結點a的指標域。假設p是指向結點a的指標,只需要將*p結點的指標域(p->next)指向原來*p結點的下乙個結點(p->next)的下乙個結點p->next = p->next- >next;或者

q= q->next;

p->next =q ->next;

delete q;

template //單鏈表結點類

class singlenode

singlenode(t data, singlenode*next = null)  //構造資料結點

};

#include

#include"singlenode.h"

template

class singlelinkedlist ;

template

singlelinkedlist ::singlelinkedlist()

template

singlekedlist::singlekedlist(t value,int n)

} }

template

singlelinked::~singlinkedlist()

template

bool singlinkedlist::isempty()

template

int singlelinkedlist::getlength()   //單鏈表遍歷

return i; }

template

singlenode*singlelinkedlist::getnode(int i)  //求第i個結點指標

return p; }

template

t singlelinkedlist::getelem(int i)

template

bool singlelinkedlist::setelem(int i, t x)//設定第i個結點元素為x

else

return false; }

template

ostream &operator<<(ostream &out, singlelinkedlist&list)

out<<")\n";

return out; }

template

void singlelinkedlist::clearlist()

head = null; }

template

singlenode*singlelinkedlist::insertelem(int i,t x)  //單鏈表插入操作

else  //單鏈表不空且i>=1

// 迴圈停止時,p指向第i-1個結點或鍊錶最後乙個結點

q= new singlenode(x,p->next);  //插入x作為p結點的後繼結點

p->next =q; }

return q; }

template

bool singlelinkedlist::removeelem (int i,t& old)  //刪除第i個結點,被刪除元素存放在old變數中

else    // 中間/尾刪除

} return false; }

#define _crt_secure_no_warnings

#include"singlelinkedlist.h"

void concatlist(singlelinkedlist&lista, singlelinkedlist&listb)

listb.head=null; }

void main()

單鏈表合併

某公司的面試題。兩個公升序單鏈表a,b,給定乙個節點c。不能申請其他節點情況下將a,b 按公升序排列。include include include struct link 建立鍊錶 nrandom 自由因子 ncount 鍊錶節點數目 link create const int nrandom,c...

合併單鏈表

線性表介面 public inte ce ilinarlist 單鏈表實現線性表 public class slinklistimplements ilinarlist 初始化線性表 public slinklist 新增元素,將元素新增在單鏈表的末尾 public boolean add e it...

合併單鏈表

合併單鏈表 20分 本題要求實現乙個函式,將兩個公升序鍊錶合併為乙個新的公升序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。在這裡描述函式介面。例如 linklist mergetwolists linklist l1,linklist l2 其中l1和l2都是使用者傳入的引數,為煉表...