链表前插,后插,中间插,删除
来源:互联网 发布:淘宝助理和店铺不同步 编辑:程序博客网 时间:2024/06/09 14:15
#include <stdio.h>
struct node
{
int num;
struct node *next;
};
typedef struct node Node;
typedef struct node * Link;
void creat_link(Link *head)
{
*head = NULL;
}
void insert_head_node(Link *newnode, Link *head)
{
(*newnode)->next = *head;
*head = *newnode;
}
void insert_tail_node(Link *newnode, Link *head)
{
if(*head == NULL)
{
(*newnode)->next = NULL;
*head = *newnode;
}
else
{
Link temp = *head;
while(temp->next != NULL)
{
temp = temp->next;
}
temp->next = *newnode;
(*newnode)->next = NULL;
}
}
int insert_mid_node(Link *newnode, Link *head, int num)
{
if(*head == NULL)
{
return -1;
}
Link temp = *head;
while(temp != NULL)
{
if(temp->num == num)
{
(*newnode)->next = temp->next;
temp->next = *newnode;
break;
}
temp = temp->next;
}
return 0;
}
int delete_node(int num, Link *head)
{
if(*head == NULL)
{
return -1;
}
Link temp = *head;
if(temp->num == num)
{
*head = (*head)->next;
free(temp);
temp = NULL;
return 0;
}
else
{
Link ptr = temp;
temp = temp->next;
while(temp != NULL)
{
if(temp->num == num)
{
ptr->next = temp->next;
free(temp);
temp = NULL;
return 0;
}
ptr = temp;
temp = temp->next;
}
}
}
int display_node(Link *head)
{
if(*head == NULL)
{
return -1;
}
Link temp = *head;
while(temp != NULL)
{
printf("%d\n",temp->num);
temp = temp->next;
}
}
int main()
{
int i;
Link head;
Link newnode;
creat_link(&head);
for(i = 0; i < 10; i++)
{
newnode = (Link)malloc(sizeof(Node));
newnode->num = i + 1;
//insert_head_node(&newnode,&head);
insert_tail_node(&newnode,&head);
}
display_node(&head);
newnode = (Link)malloc(sizeof(Node));
newnode->num = 11;
insert_mid_node(&newnode,&head,5);
display_node(&head);
printf("delete 5:\n");
delete_node(5,&head);
display_node(&head);
return 0;
}
struct node
{
int num;
struct node *next;
};
typedef struct node Node;
typedef struct node * Link;
void creat_link(Link *head)
{
*head = NULL;
}
void insert_head_node(Link *newnode, Link *head)
{
(*newnode)->next = *head;
*head = *newnode;
}
void insert_tail_node(Link *newnode, Link *head)
{
if(*head == NULL)
{
(*newnode)->next = NULL;
*head = *newnode;
}
else
{
Link temp = *head;
while(temp->next != NULL)
{
temp = temp->next;
}
temp->next = *newnode;
(*newnode)->next = NULL;
}
}
int insert_mid_node(Link *newnode, Link *head, int num)
{
if(*head == NULL)
{
return -1;
}
Link temp = *head;
while(temp != NULL)
{
if(temp->num == num)
{
(*newnode)->next = temp->next;
temp->next = *newnode;
break;
}
temp = temp->next;
}
return 0;
}
int delete_node(int num, Link *head)
{
if(*head == NULL)
{
return -1;
}
Link temp = *head;
if(temp->num == num)
{
*head = (*head)->next;
free(temp);
temp = NULL;
return 0;
}
else
{
Link ptr = temp;
temp = temp->next;
while(temp != NULL)
{
if(temp->num == num)
{
ptr->next = temp->next;
free(temp);
temp = NULL;
return 0;
}
ptr = temp;
temp = temp->next;
}
}
}
int display_node(Link *head)
{
if(*head == NULL)
{
return -1;
}
Link temp = *head;
while(temp != NULL)
{
printf("%d\n",temp->num);
temp = temp->next;
}
}
int main()
{
int i;
Link head;
Link newnode;
creat_link(&head);
for(i = 0; i < 10; i++)
{
newnode = (Link)malloc(sizeof(Node));
newnode->num = i + 1;
//insert_head_node(&newnode,&head);
insert_tail_node(&newnode,&head);
}
display_node(&head);
newnode = (Link)malloc(sizeof(Node));
newnode->num = 11;
insert_mid_node(&newnode,&head,5);
display_node(&head);
printf("delete 5:\n");
delete_node(5,&head);
display_node(&head);
return 0;
}
0 0
- 链表前插,后插,中间插,删除
- 带头结点的链表头插,尾插,中间插以及删除节点
- 单向循环链表的头插,尾插,中间插以及删除节点
- 单向循环链表,头插,尾插,中间插入,删除等功能
- 【c++程序】链表前插、插入和后插
- 带表头节点的循环双向链表(头插,尾插,中间插,清除,前向显示,后向显示)
- 链表的插入(头插,尾插,中间插)
- 链表中间插加强版
- 2016年12月21日学习总结----单向循环链表操作程序(头插,尾插,中间插入,删除,逆序)
- 2016年12月23日学习总结----双向循环链表操作程序(头插、尾插、中间插入、删除)
- 单链表的头插 尾插 反序 遍历 插入 删除
- 单链表的头插、尾插、删除、合并等操作
- 单链表初始化,头插,尾插,查找,删除
- 单链表的头插、中插、尾插、删除、逆序、显示(C语言实现)
- 硬件--如何安全删除USB后不重新插拔而自动重连
- 三、Oracle12c_PDB的拔插与删除
- mysql-插入时存在则删除
- 双向循环链表的头插尾插中间插基本操作
- 哈希表详解
- MacOS下MySql的安装
- 采用AIDL调用远程服务
- 运用ArcGIS对图像进行二值化处理
- thinking in java 第7章练习一答案详解!
- 链表前插,后插,中间插,删除
- android (一) -fragment 的静态实现
- eclipse常用快捷键
- hdu1237简单计算器-栈实现
- 从零开始学大数据-----Java基础篇之Java的环境搭建
- STM32硬件IIC之DMA传输数据
- iOS逆向之分析微信导航栏实现
- automake中Makefile.am和configure.ac的格式及编译过程
- DICOM中的UID