无表头的插入、删除、逆序
来源:互联网 发布:淘宝美工用色 编辑:程序博客网 时间:2024/05/30 04:29
单链表的插入:
1、头插
2、尾插
3、中插
4、删除
5、逆序
#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 reverse_link(Link *head){ if(*head == NULL || (*head)->next == NULL) { return 0; } Link ptr = *head; Link str = ptr->next; Link temp = str->next; while(temp != NULL) { str->next = ptr; ptr = str; str = temp; temp = temp->next; } str->next = ptr; (*head)->next = NULL; *head = str;}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++单链表的创建插入删除以及逆序操作
- LinkedList 的简单操作 :插入 删除 正序、逆序遍历
- C数据结构链表的插入,删除,逆序…
- 链表的插入、删除、逆序打印、输出倒数第N个、链表逆序
- 单链表的逆序(不带表头)
- 用链表实现的栈(单向链表,表头插入和删除)
- 单链表[建表、输出、插入、删除、逆序]
- 单链表创建及其插入,删除,逆序
- 单链表的基本操作的实现(建立、插入、删除、逆序)
- 顺序表的创建,插入,删除,查找,逆序以及合并两个有序的顺序表
- 单链表的创建、插入、删除;创建采用两种不同的方式:一种是从表头到表尾,另一种是从表尾到表头!
- 插入法单链表的逆序代码
- 数据结构:链表的基本操作(创建,删除,插入,逆序,摧毁)
- 链表的创建 查找 排序 插入 删除 逆序 长度 显示
- linux时间修改
- PM到底做什么(What Do Product Managers Do?)
- git的使用(上传项目到github)
- 今日我们如何构建虚拟现实Web
- 【C/C++ 】C++库类大全
- 无表头的插入、删除、逆序
- Linux kernel的中断子系统之(一):综述
- Maven依赖
- openresty用AES/ECB/NoPadding 128位解密
- JTree添加节点
- Java的前置++和后置++效率对比
- [伊利丹·怒风] Unity3D 绘制矩形(DrawRect)及可视化调试
- c++ vector的简单介绍和使用
- 上次发版我就改了一行代码!