zoukankan      html  css  js  c++  java
  • 链表中插入一个节点的三种情况

    在链表中插入一个元素能够分为三种情况:

    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("请输入大于零的数
    ");
    	}
    
    	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;
    }

    这在中间插入是能够实现的

    可是实如今头节点的时候插入的时候出现了问题



    这个问题是没有考虑到插入的是头节点的情况

  • 相关阅读:
    php静态调用非静态方法
    phalcon 框架3.0更新时报错
    centos7.5更换docker-ce镜像源
    腾讯云更换镜像源遇到的坑
    php cli模式下调试
    审查php.ini自动分析程序
    docker WARNING: IPv4 forwarding is disabled. Networking will not work.
    git常用命令,制作缩写命令
    学习GRPC(一) 简单实现
    mac与linux服务器之间使用ssh互通有无
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/6698714.html
Copyright © 2011-2022 走看看