链表中插入一个节点的三种情况
来源:互联网 发布:asp网页 sql数据库 编辑:程序博客网 时间:2024/06/14 07:30
在链表中插入一个元素可以分为三种情况:
1、在节点的时候
2、在链表中间的任意位置
3、在链表的最后位置,也可以认为这种情况为追加(这个就留到追加的时候来实现)
下面是代码的实现
SN *Insert_S_Node(SN *head)/* 传入的参数是被插入链表中的头指针 */ {SN *Insert_Node=NULL, *Dest_Node = NULL;/* Insert_Node是将要做成的新链表中的节点 Dest_Node是要插入的节点*/INT32 OSM = 1, i32i = 0, flag = 0; Dest_Node = ( SN* )malloc( sizeof (SN) );Insert_Node = head;OSM = OSM_Printf("输入要插入的位置: ");Dest_Node->Sensor_rating = scanf_for(); /* 输入插入的序号 */i32i = getchar();/* 消除回车换行的影响 */if ( 0 > Dest_Node->Sensor_rating)/* 防止输入了小于0的数 */{OSM = OSM_Printf("请输入大于零的数\n");}else{OSM = OSM_Printf("输入要插入的元素:");/* 插入的元素 */if ( NULL != Dest_Node->Sensor_title ){gets(Dest_Node->Sensor_title);/* 输入插入的元素 */}/* 遍历到要插入的位置 */while (Insert_Node->next != NULL){Insert_Node = Insert_Node->next;if ( 0 == flag ){if( Dest_Node->Sensor_rating == Insert_Node->next->Sensor_rating)/* 判断是否相等 */{Dest_Node->next = Insert_Node->next;/* 开始执行q->next = p->next q->next = p */Insert_Node->next = Dest_Node;flag = 1;/* 设置标志 */Insert_Node = Dest_Node->next;}}if ( 1 == flag ){Insert_Node->Sensor_rating++;}}}return head;}
这在中间插入是可以实现的
但是实现在头节点的时候插入的时候出现了问题
这个问题是没有考虑到插入的是头节点的情况
0 0
- 链表中插入一个节点的三种情况
- 【算法之链表(三)】单链表中,在仅允许使用一个指针的情况下,在指定的节点前面插入以及删除一个节点
- 在链表中插入节点时候的一个trick
- 在一个已排序的循环链表中插入节点
- 找寻二叉树中两个节点的公共父节点中最近的那个节点的三种情况
- 找寻二叉树中两个节点的公共父节点中最近的那个节点的三种情况
- 在无头单链表的一个节点前插入一个节点
- 编程实现一个单链表节点的插入
- 向升序单向链表中插入一个节点
- 向升序单向链表中插入一个节点
- 向升序单向链表中插入一个节点
- 【单链表经典面试题解析三】在无头单链表的一个非头节点前插入一个节点(要求不能遍历单链表)
- 使用final关键字修饰一个变量的三种情况
- SQL:将查询结果插入到另一个表的三种情况
- SQL:将查询结果插入到另一个表的三种情况
- sql server,将查询结果集插入其他表的三种情况
- SQL:将查询结果插入到另一个表的三种情况
- 如何将查询到的结果插入到另外一张表中的三种情况
- 我的艰难创业故事
- 【Python学习】Python连接MySQL
- 不允许创建临时变量,交换两个数的内容
- Ubuntu java 环境变量
- Combination Sum 2 不允许重复
- 链表中插入一个节点的三种情况
- 我的IMU开发之路第一天之硬件篇
- java hashset的那些事
- 并发和并行
- 解决Android 离线Doc文档访问速度慢的有效方法
- Html快速入门总结
- Linux 下三种方式设置环境变量
- andriod之ContentProvider读取外部存储图片
- Dijkstra算法——《算法导论》学习心得(十三)