單鏈表(有無頭結點建立鍊錶)

2021-10-18 01:15:07 字數 2543 閱讀 8032

linklist initlist()

//單鏈表的初始化函式

在頭部插入新節點建立單鏈表

(1)有頭節點

void

creatbyhead

(linklist head)

//頭插法建立單鏈表

}

本質上就是在頭結點之後插入新結點

(2)無頭節點

linklist creatbyhead1

(linklist head)

//頭插法(無結點)

return head;

}

本質上是在head(第乙個結點而非頭結點)之前插入結點

- 在單鏈表的尾部插入新結點

(1)有頭點

linklist creatnodebyrear

(linklist head)

//尾插法

r->next=

null

;}

(2)無頭結點

linklist creatlist2()

//尾插法(無頭結點)

else

r=s;

}return head;

}

四種建立單鏈表的完整**

#

include

#include

typedef

struct

node

node,

*linklist;

void

creatlistbyrear

(linklist head)

//有頭節點的尾插法

r->next=

null;}

linklist creatlistbyrear1

(linklist head)

//沒有頭節點的尾插法

else

}return head;

}creatlistbyhead

(linklist head)

//有頭節點的頭插法

}linklist creatlistbyhead1

(linklist head)

//不帶頭節點的頭插法

return head;

}inputlist

(linklist head)

//輸出

}int

main()

void

deletenode

(linklist head,

int pos)

//刪除結點(有頭節點)

if(p==

null

||p->next==

null

)printf

("error!");

else

}

其他位置與帶頭結點的一樣

linklist delete

(linklist head,

int i)

else

if(p==

null

||p->next==

null)if

(p)}

return head;

}

- 不帶頭結點單鏈表的刪除

其他位置與帶頭結點相同

linklist insert

(linklist head,

int i)

else

if(p)

}return head;

}

struct

node2

*reverselink

(struct

node2

*head)

pmid->next =pfirst;

return pmid;

}

//兩個陣列模擬鍊錶

#include

intmain()

for(i=

1;i) s[n]=0

;printf

("要加入的資料:");

scanf

("%d"

,&x)

; a[len]

=x; t=1;

while

(t!=0)

t=s[t]

;//實現遞推

} t=1;

//讓t重新歸1

while

(t!=0)

}

單鏈表操作 頭結點方式

單鏈表 訪問時,只能通過表頭遍歷進行訪問,遍歷結束的條件是最後乙個節點的為null。單鏈表中可以分為資料域和指標域。資料域為使用者儲存資料的變數。指標域則指向下乙個節點。一般單鏈表操作可以分為頭節結方式和頭指標方式 struct node root null 方式。由於單鏈表訪問節點只有一條路徑,因...

頭結點鍊錶練習

這是乙份關於頭結點鍊錶的問題 完成一些基本的煉表處理函式,包括插入,查詢,刪除,輸出等一些功能的實現 include include include linklist.h node creat list 尾插法 int insert last node head,linkdata data 頭插法 ...

無頭結點鍊錶

include include linklist.h struct node create linklist creat linklist 根據使用者輸入,建立乙個單鏈表 struct node pnew struct node malloc sizeof struct node pnew data...