資料結構之單鏈表與迴圈鍊錶

2022-10-08 22:42:19 字數 2159 閱讀 6614

1.節點:資料元素的儲存映像。由資料域和指標域兩部分組成。

2.鍊錶:n個節點由指標域組成乙個鍊錶。它是線性表的鏈式儲存映像,稱為線性表的鏈式儲存結構

單鏈表的結構:

typedef struct lnodelnode, *linklist        //linklist 為指向結構體lnode的指標型別
status initlist_l(linklist &l)
int listempty(linklist l)  else 

}

status destroylist_l(linklist &l) 

}

status destroylist_l(linklist &l) 

l->next = null // 便利完除頭節點,其餘結點已經全部消除,將頭結點的指標域賦值為空

return ok

}

int listlength_l(linklist l) 

return i

}

status getelem_l (linklist l,int i,elemtype &e) 

if(!p || j>i) return error //判斷第i個元素是否存在

e=p->data //取第i個元素

return ok

}// getelem_l

lnode *locateelem_l (linklist l,elemtype e) 

return p

}

status listinsert_l (linklist &l.int i, elemtype e)   

s = new lnode; //生成新結點s,將結點s的資料置為e

s->data = e

s->next = p->next //將結點i-1的next賦值給插入結點

p->next = s //將插入結點賦值給i-1的next

return ok

}

status listdelete_l (linklist &l.int i, elemtype &e) 

if(!(p->next)||j>i-1) return error //判斷刪除位置是否合理

q=p->next //找到第i個結點的位置

p->next = q->next //將第i+1個結點的位置賦值給i-1的next

e = q->data //儲存刪除結點的資料域

delete q //釋放結點的空間

return ok

}

1.頭插法(從最後乙個結點開始,依次將各結點插入到鍊錶的前端)

void createlist_h(linklist &l, int n)

}2.尾插法(元素插入在鍊錶尾部)

void createlist_r(linklist &l, int n)

}

由於迴圈列表中尾指標的next指向了頭指標,所以沒有null指標,在涉及遍歷的時候,其終止條件就不再非迴圈鍊錶那樣判斷p或p->next是否為空,而是判斷它們是否等於頭指標

//合併尾指標的兩個迴圈鍊錶

linklist connect(linklist ta, linklist tb)

C 資料結構 單鏈表 雙鏈表與迴圈鍊錶

注意 以下所有鍊錶均包含空的頭結點。include stdafx.h include using namespace std 節點類 class node 乙個引數的建構函式 node node nextvalue 單鏈錶類 class singlelinkedlist node p newnode...

資料結構 鍊錶之單鏈表

單鏈錶即每個節點都存在資料域和指標域 特殊節點除外 每個節點都乙個直接前驅節點和直接後繼節點 頭節點無前驅,尾節點無後繼 簡單來說就是上乙個節點的指標域中存放了下乙個節點的位址,因此可以實現層層節點依次查詢,時間複雜度為o n 這也就是相對順序表而言的缺點,但是對於頻繁的插入和刪除節點卻是相對於順序...

資料結構總結 單鏈表 迴圈鍊錶 雙向鍊錶

總體構成 頭節點 不作資料的儲存,儲存鍊錶的公共資料資訊,如 長度 另外還有,還包括頭指標,指向第乙個資料節點 資料節點 顧名思義是存資料的,鍊錶最後的節點的指標域為null 節點的構成 資料域 儲存資料元素資訊 操作流程 遍歷的流程 1.通過頭節點的指標域得到第乙個元素 2.在通過第乙個元素的資料...