#include
#include
#include
//這是常規的三個標頭檔案
#pragma warning(disable:4996)
//這是為了避免vs報錯。
//帶頭節點的單鏈表
struct linkednode
;//基本操作
//建立鍊錶
struct linkednode*
init_linklist()
;//遍歷
void
foreach_linklist
(struct linkednode* header)
;//插入:在給定某個值之前插入,如果給定值在鍊錶中沒有,那麼插入鍊錶尾
void
insert_linklist
(struct linkednode* header,
int oldval,
int newval)
;//刪除乙個結點
void
deletenode_linklist
(struct linkednode* header,
int delval)
;//銷毀
void
destroy_linklist
(struct linkednode* header)
;//清空
void
clear_linklist
(struct linkednode* header)
;//逆序 a-b-c-d ---> d-c-b-a
void
reverse_linklist
(struct linkednode* header)
;//基本操作
//建立鍊錶,尾插法。
struct linkednode*
init_linklist()
//建立乙個新的節點,然後插入鍊錶尾
struct linkednode* newnode =
(struct linkednode*
)malloc
(sizeof
(struct linkednode));
newnode-
>data = val;
newnode-
>next =
null
; pcurrent-
>next = newnode;
pcurrent = newnode;
}return header;
}//遍歷
void
foreach_linklist
(struct linkednode* header)
struct linkednode* pcurrent = header-
>next;
while
(pcurrent !=
null
)printf
("\n");
}//插入:在給定某個值之前插入,如果給定值在鍊錶中沒有,那麼插入鍊錶尾
void
insert_linklist
(struct linkednode* header,
int oldval,
int newval)
struct linkednode* pprev = header;
struct linkednode* pcurrent = header-
>next;
struct linkednode* newnode =
(struct linkednode*
)malloc
(sizeof
(struct linkednode));
newnode-
>data = newval;
newnode-
>next =
null
;while
(pcurrent !=
null
) pprev = pcurrent;
pcurrent = pcurrent-
>next;}if
(pcurrent ==
null
) newnode-
>next = pcurrent;
pprev-
>next = newnode;
return;}
//刪除乙個結點
void
deletenode_linklist
(struct linkednode* header,
int delval)
struct linkednode* pprev = header;
struct linkednode* pcurrent = header-
>next;
while
(pcurrent !=
null
) pprev = pcurrent;
pcurrent = pcurrent-
>next;}if
(pcurrent ==
null
) pprev-
>next = pcurrent-
>next;
free
(pcurrent)
; pcurrent =
null
;return;}
//銷毀
void
destroy_linklist
(struct linkednode* header)
//清空
void
clear_linklist
(struct linkednode* header)
struct linkednode* pcurrent = header-
>next;
while
(pcurrent !=
null
) header-
>next =
null
;return;}
//逆序 a-b-c-d ---> d-c-b-a
void
reverse_linklist
(struct linkednode* header)
struct linkednode* pprev = header-
>next;
struct linkednode* pcurrent = pprev-
>next;
struct linkednode* t =
null
;while
(pcurrent)
//讓鍊錶裡面的每相鄰兩元素改變指標。
header-
>next-
>next =
null
;//讓第乙個結點的next域為null
header-
>next = pprev;
//新鍊錶的第乙個結點是pprev,因為pprev是該鍊錶的最後乙個結點
}
帶頭結點的單鏈表插入操作
本題要求實現帶頭結點的單鏈表插入操作,插入成功返回1,否則返回0。函式介面定義 int insert link linklist l,int i,elemtype e l是單鏈表的頭指標,i為插入位置,e是插入的資料元素,插入成功返回1,否則返回0。裁判測試程式樣例 include include ...
帶頭結點單鏈表的基本操作
單鏈表 include includetypedef int elemtype typedef struct lnodelnode,linklist bool initlist linklist l 初始化單鏈表 linklist head insertlist linklist l 頭插法建立單鏈...
帶頭結點的單鏈表
帶頭結點的單鏈表 1 頭結點 在棧區開闢,指標域指向第乙個首元結點,資料域不儲存資料,可以儲存當前結點的個數 2 普通結點 無論是頭結點還是普通結點都是乙個結構體型別,由指標域和資料域組成 指標域指向下乙個結點,儲存下乙個結點的位址 資料域可以設定成聯合體型別,成員由資料元素和結點個數組成,之所以將...