#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...