單鏈表是資料結構中比較基礎的結構了。對於單鏈表的的建立方法,比較容易想到的是頭插法。但是當要求輸入順序與鍊錶連線的順序一致時,那麼頭插法就不是很友好了。因此了解單鏈表的尾插法也是很重要。
首先定義了單鏈表節點的資料結構listnode,具體**如下:
struct listnode
;
頭插法,顧名思義就是從單鏈表的頭指標處插入節點,優點是思路簡單,比較符合單鏈表的正常思路,缺點就是插入順序與鍊錶連線順序相反。頭插法的操作步驟如下:
建立乙個節點newnode;儲存頭指標head.next的副本temp;讓頭指標指向newnode,newnode.next指向temp;
**實現:
void
creatlist_front
(listnode*
const
&h,const
int&a)
尾插法,就是從尾部插入節點的,優點是插入順序與鍊錶連線順序一致。因為頭插法有了頭指標,所以尾插法要宣告乙個尾指標tail,它始終指向鍊錶的最後乙個節點,因此給定乙個單鏈表時head時,要用尾插法插入節點必須先找到該鍊錶最後乙個節點,並讓tail指向它,如果鍊錶為空那麼,tail = head;
尾插法的操作步驟:
建立尾指標tail,使tail指向鍊錶的最後乙個節點;建立新節點newnode;使tail->next指向新節點newnode;讓tail指向newnode;
**實現如下:
void
creatlist_back
(listnode *
&t,const
int&a)
先用頭插法插入一部分資料,再用尾插法插入一部分,看看效果如何。
#include
using
namespace std;
struct listnode
;/*頭插法*/
void
creatlist_front
(listnode*
const
&h,const
int&a)
/*尾插法*/
void
creatlist_back
(listnode *
&t,const
int&a)
intmain()
return0;
}
第一次輸入:1 2 3 4 (ctrl+z)第二次輸入:5 6 7 8 (ctrl+z)
輸出:4 3 2 1 5 6 7 8
頭插法和尾插法建立單鏈表
頭插法和尾插法建立單鏈表 include using namespace std typedef int elemtype typedef struct lnode linklist 頭插法建表 從尾部乙個乙個往前插入 void createlisthead linklist l,elemtype ...
頭插法與尾插法建立單鏈表
單鏈表的建立一般主流分為兩種建立方式 頭插法和尾插法。頭插法1 建立頭節點,維護head指標 引用 來指向頭節點 2 newnode表示待插入節點,維護newnode指向新節點 3 case1 當鍊表為空時,即首次插入新節點,將head.next指向新插入節點,即head.next newnode ...
頭插法和尾插法建立單鏈表
頭插法建立單鏈表 include include typedef struct lnodenode,linklist linklist headinsert linklist 頭插法建立單鏈表 void output linklist 遍歷輸出 int main void 頭插法建立單鏈表 link...