無頭單鏈表的操作

2021-09-10 02:17:30 字數 2444 閱讀 6404

△節點結構

typedef定義

//不帶頭節點的單鏈表 

typedef int sdatatype;

// 節點結構

typedef struct slistnode

node,*pnode;

△鍊錶結構

typedef定義

// 給乙個鍊錶結構 

typedef struct slist

slist;

△鍊錶的初始化

1.斷言

2.頭指標指向null

// 鍊錶的初始化 

void slistinit(slist* pl)

△建立新結點

1.為新結點申請動態記憶體空間

2.判斷新結點是否為空

3.將元素的值賦給新結點

4.將新結點的next域指向null

//建立乙個結點

pnode buylistnode(sdatatype data)

pnewnode->_data = data;

pnewnode->_pnext = null;

}

△尾插法

0.斷言assert( )

1.鍊錶為空

讓頭指標指向新結點

2.只有乙個結點

讓頭指標的next指向新結點

3.有多個結點

遍歷,找到鍊錶中next域為空的結點,將該結點的next指向新結點

void slistpushback(slist* pl, sdatatype data)

//2.只有乙個結點

else if (pl->_phead->_pnext == null)

//3.有多個結點

else

cur->_pnext = buylistnode(data);

}}

△尾刪法

1.斷言assert

2.鍊錶為空

返回;3.只有乙個結點

free掉頭指標的next域;

讓頭指標指向null;

4.有多個結點

設定指標cur,儲存鍊錶的最後乙個結點;

設定指標pre,儲存鍊錶的倒數第二個結點;

讓cur指向頭指標,將指標pre置為空,然後讓cur從鍊錶第乙個元素向後遍歷,pre指向cur,當cur指向的結點的next域為null時,遍歷結束,此時,cur指向鍊錶的最後乙個結點,pre指向了鍊錶的倒數第二個結點,free掉cur,將pre的next域指向空。

// 尾刪法

void slistpopback(slist* pl)

//只有乙個結點

else if (pl->_phead->_pnext==null)

//有多個結點

else

free(cur);

cur = null;

pre->_pnext = null;

}}

△頭插法

1.判表空

2.設定乙個cur指標存放新結點

3.將cur指向頭指標的next域,將頭指標指向cur

void slistpushfront(slist* pl, sdatatype data)

else

}

△頭刪法

1.判表空

2.只有乙個結點:

將頭指標指向null

3.有多個結點:

設定乙個指標cur指向頭指標的next域,將頭指標指向cur的next域,free掉cur

void slistpopfront(slist* pl)

else if (pl->_phead->_pnext==null)

else

}

△在鍊錶pos位置後插入置為data的節點

1.判斷插入位置是否合法

2.設定兩個指標cur,pre,cru指標指向頭指標,pre指標指向null,若cur不等於pos,cur繼續往後走,若cur等於pos,將data存放在pre中,將pre指向cur的next域,將cur的next域指向pre。

單鏈表操作 無頭節點

ifndef singlelist h define singlelist h 這是沒有頭結點的版本檔案 有頭結點的版本更簡單些,操作統一 include include include include typedef int elemtype typedef struct nodenode,lin...

無頭單鏈表

鍊錶有單鏈表 雙鏈表和雙向迴圈鍊錶,每種鍊錶都有無頭和帶頭兩種,帶頭就是頭結點不存放資料元素 ifndef linklist h define linklist h include stdio.h include assert.h include string.h include malloc.h ...

單鏈表 無頭節點

就這書上 敲了一邊,加深印象,沒有頭結點的時候插入第乙個就有所不同了,而刪除時要找到前乙個,注意current link null 就這樣。include include include using namespace std struct linknode class list bool list...