帶頭結點的單向鍊錶的基本操作

2021-09-11 11:00:17 字數 1455 閱讀 9781

#include #include struct node

;typedef struct node node;

typedef struct node * link;

void create_node(link * new_node)

void create_head(link *head)

//帶頭結點的單向鍊錶初始化

void insert_node_head(link head,link new_node)

//頭插法

void insert_node_tail(link head,link new_node)

if(p->next == null)

}//尾插法,插在最後結點後面,與無頭結點的單向鍊錶相比,不用判斷首結點是否為空

void insert_node_mid_before(link head,link new_node,int insertlocation)

else

if(p->next==null)

else

}} void insert_node_mid_after(link head,link new_node,int insertlocation)

else

if(p->next==null)

else

}}void delete_node(link head,int deletenum)

else

if(p->next==null)

else

}}void display(link head)

while(p!=null)

}//回顯函式

void release(link *head)

while(p!=null)

}//釋放所有的結點

int main()

display(head);

create_node(&new_node);

printf("enter insert numbers:\n");

scanf("%d",&new_node->num);

printf("enter insertlocation:\n");

scanf("%d",&insertlocation);

// insert_node_mid_after(head,new_node,insertlocation);

insert_node_mid_before(head,new_node,insertlocation);

display(head);

printf("enter deletenum:\n");

scanf("%d",&deletenum);

delete_node(head,deletenum);

display(head);

return 0;

}

不帶頭結點的鍊錶的基本操作

與帶頭結點的單鏈表相比,不帶頭結點的單鏈表沒有頭結點,可以簡單的理解為,帶頭結點的單鏈表的的頭結點一般資料域不存元素,指標域指向第乙個結點,頭指標 假設為phead 指向頭結點,而不帶頭結點的單鏈表,頭指標指向單鏈表的第乙個結點,如果把鍊錶中的結點進行編號,帶頭結點的鍊錶的頭結點可以理解為是其第0個...

帶頭結點的雙向迴圈鍊錶的基本操作

定義與宣告 typedef int datatype typedef struct dlistnode node void dlistinit node phead 初始化 void dlistpushback node p,datatype data 尾插 void dlistpopback no...

雙迴圈鍊錶的基本操作(不帶頭結點)

node.h ifndef node h define node h include include typedef struct node node,dnode endiflist.h ifndef list h define list h include node.h 初始化鍊錶 void in...