屬於線性表的一種,採用鏈式儲存的儲存結構。
優點:空間動態分配,不要求連續的大片空間。
插入刪除方便(時間複雜度低)。
缺點:不能隨機訪問。
相對於帶頭結點的單鏈表 插入、刪除不統一(實現比較複雜)。
演算法效能:
#include
#include
/** * 無頭結點的單鏈表的實現
* */
typedef
struct nodenode,
*linkedlist;
// 初始化
void
init
(linkedlist &list)
// 尾插法,插入操作
bool
insert
(linkedlist& list,
int data)
else
p->next = temp;
// 鏈結到尾節點
}return
true;}
// 頭插法,插入操作
bool
headinsert
(linkedlist& list,
int data)
// 找到第i個節點
node*
getelem
(linkedlist& list,
int index)
return p;
// 返回第index個節點,如果index > len返回尾null
}// 刪除乙個節點
bool
delete
(linkedlist& list,
int index,
int& data)
node* p =
getelem
(list, index -1)
;// 獲取到要刪除的元素
if(p)
return
false;}
// 獲取鍊錶長度
intgetlen
(linkedlist list)
return i;
}// 從頭到尾輸出鍊錶資料
void
show
(linkedlist list)
printf
("\n");
}int
main()
else
show
(head)
;insert
(head,5)
;insert
(head,6)
;headinsert
(head,7)
;show
(head);if
(delete
(head,
3, x)
)else
show
(head)
;system
("pause");
return0;
}
資料結構 無頭結點的單鏈表
start reading 頭結點是用來標記單鏈表的乙個標誌,有些時候我們可以不使用頭結點,這時候操作就完全不一樣了。如何建立乙個無頭結點的單鏈表?不能在頭結點的資料域中放資料再變成假的第乙個資料節點在進行操作,那是自己騙自己。在單鏈表中我們直接頭結點進行解引用,但無頭結點的鍊錶最初其實就是乙個指標...
資料結構無頭單鏈表
template class slist node t data node head node tail int size public slist 複製建構函式 slist const slist sl slist 尾插 void slistpushback t data 尾刪 void slis...
c實現無頭結點單鏈表
標頭檔案 ifndef linklist h define linklist h include include include include typedef int datatype typedef struct node node,pnode,plist void initlinklist p...