C单链表的操作(创建、插入、删除)
来源:互联网 发布:营养师网络兼职招聘 编辑:程序博客网 时间:2024/06/06 03:03
一、单链表
在单链表中,每个节点都包括两个域,即数据域,指针域,也就是说每个节点都包含一个指向下一个节点的指针,链表中的最后一个节点的指针字段的值为NULL,提示链表后面不再有其他节点。遍历链表自始自终都是从头结点开始,就可以访问所有的节点。为了记住链表的起始位置,可以使用一个根节点,根节点的指针域始终指向第一个节点。注意根节点的数据域可以有,也可以没有。
二、程序示例
/*linklist*/#include <stdio.h>#include <stdlib.h>typedef struct NODE{struct NODE *next;int val;}Node;/*创建链表,初始化为5,10,15*/int create_list(Node **header)//指针的指针传递动态内存{int i;Node *temp;*header = (Node *)malloc(sizeof(Node));(*header)->next = NULL;for (i=15; i>0; i-= 5)//第一次molloc的节点为尾节点,{//然后往头结点与下一个相邻的节点之间插入新节点temp = (Node *)malloc(sizeof(Node));temp->val = i;temp->next = (*header)->next;(*header)->next = temp;}return 0;}/*插入链表中第一个比new_val大的值之前*/Node *insert(Node **pre, int new_val){Node *new;Node *cur;Node *head;int i = 0;//记录节点的位置new = (Node *)malloc(sizeof(Node));cur = *pre;head = *pre;//备份,用于返回指向第一个节点的指针while(cur && (cur->val<new_val))//注意先后顺序cur要在前面优先判断,{//执行cur->val之前保证cur不是NULLpre = &cur->next;cur = *pre;i++;}if (cur==NULL){printf("not exist!\n");exit(1);}new->val = new_val;new->next = cur;*pre = new;if (i==0)head = new;//(头结点被更改)返回指向第一个节点的指针return head;}/*删除链表中第一个比value大的值*/Node *delete(Node **pre, int value){Node *cur;Node *head;int i = 0;cur = *pre;head = *pre;while(cur && (cur->val<value)){pre = &cur->next;cur = *pre;i++;}if (NULL==cur){printf("not exist!\n");exit(1);}*pre = cur->next;free(cur);if (i==0)head = *pre;//(头结点被更改)返回指向第一个节点的指针return head;}/*打印链表*/int display(Node *p, int len){int i;for (i=0; i<len; i++)//从第一个节点开始操作{printf("%d\n",p->val);p = p->next;}return 0;}int main(void){Node *head = NULL;//头节点int i;Node *p;create_list(&head);p = head->next;//第一个节点printf("original list:\n");display(p, 3);p = insert(&p,3);printf("after insert list:\n");display(p, 4);p = delete(&p,12);printf("after delete list:\n");display(p, 3);return 0;}
0 0
- C单链表的操作(创建、插入、删除)
- c 单链表的创建、插入、删除、倒置操作
- c/c++单链表的创建和删除,插入,反转操作
- 单链表的创建、插入、删除、倒置操作
- 单链表的创建、插入、删除、倒置操作
- 单链表的创建、插入、删除等操作
- 单链表的创建,插入删除等操作
- 单链表的创建、插入删除等操作
- C++单链表的操作(创建,删除,打印,遍历,插入)
- 单链表的基本操作(创建、插入、删除......)
- c语言单链表的创建、插入、删除
- c语言实现单链表的操作:创建,删除,插入,反转, 排序等
- C语言之数据结构的顺序单链表创建,插入和删除操作
- C/C++学习(九)循环双链表的操作之创建,插入、删除
- 二叉排序树的创建(结点的插入,删除等操作)
- 单链表的创建、插入,删除、查找等操作
- C++实现单链表的创建、插入、删除、逆置操作
- C++单链表的创建插入删除以及逆序操作
- LeetCode OJ 之 Evaluate Reverse Polish Notation (求逆波兰表达式的值)
- Linux中2>&1使用
- R的slidify 第一个ppt
- 关于C语言的一些容易搞混的问题
- UIView 基础动画
- C单链表的操作(创建、插入、删除)
- Android: 设置模拟按键快捷方式
- Oracle 12c 配置和修改 CDB 和 PDB 参数
- Android 5.0材料设计 RecyclerView的使用
- windows mysql 自动备份的几种方法
- Linux查看CPU和内存使用情况
- 使用静态库--调试错误
- jQuery事件
- 第十四周项目五:体会棋盘游戏中的数据储存