链表中插入一个节点的三种情况

来源:互联网 发布: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
原创粉丝点击