在链表中插入一个元素能够分为三种情况:
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;
}