首页 > 其他分享 >链表从指定前方插入节点

链表从指定前方插入节点

时间:2022-12-06 21:46:58浏览次数:47  
标签:head struct next 链表 插入 Test new data 节点

在链表的前方插入节点

#include<stdio.h>

struct Test
{
  int data;
  struct Test * next;
};

printfLink(struct Test * head)
{
   while(head!=NULL)
   {
      printf("%d\n",head->data);
      head=head->next;
   }
   putchar('\n');
}

struct Test * InsertBeforeNode(struct Test *head,int data,struct Test * new)
{
    struct Test * p=head;
   if(p->data==data)
   {
     new->next=head;
     return new;
   }
    while(p->next!=NULL)
    {
       if(p->next->data==data)
       {
          new->next=p->next;
          p->next=new;
          printf("insert OK\n");
          return head;
       }
       p=p->next;
       printf("no insert\n");
    }
    return head;
}

void InsertAfterNode(struct Test *head,int data,struct Test *new)
{
    struct Test * p=head;
    while(p!=NULL)
    {
        if(p->data==data)
        {
           new->next=p->next;
           p->next=new;
        }
        p=p->next;
    }
}

int main()
{
   struct Test head={1,NULL};
   struct Test new1={2,NULL};
   struct Test new2={3,NULL};
   struct Test new3={4,NULL};
   InsertAfterNode(&head,1,&new1);
   printf("after insert:\n");
   printfLink(&head);
   struct Test *hp=InsertBeforeNode(&head,2,&new3);
   printf("after insert:\n");
   printfLink(hp);
   return 0;
}

首先通过InsertAfterNode在data=1的节点的后面插入一个new1节点,然后通过InsertBeforeNode在data=2的节点前插入一个new3节点

输出结果:

after insert:
1
2
insert OK
after insert:
1
4
2

 

标签:head,struct,next,链表,插入,Test,new,data,节点
From: https://www.cnblogs.com/zxtang/p/16953786.html

相关文章

  • LEEP节点无线链路质量评估实验
    一、实验目的理解节点通信链路质量的影响因素理解提升链路质量的一般方法学习TinyOS系统中CC2530/CC2538节点发送功率的设置体验不同发送功率、不同通信距离、不......
  • #yyds干货盘点# LeetCode程序员面试金典:移除重复节点
    题目:编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。示例1:输入:[1,2,3,3,2,1]输出:[1,2,3]示例2:输入:[1,1,1,1,2]输出:[1,2]代码实现:classSolu......
  • ansible 清理k8s集群的node节点日志
    目录ansible清理k8s集群的node节点日志获取对应节点信息脚本删除各个节点的日志脚本ansible分发clear_docker_log.sh并做成计划任务ansible清理k8s集群的node节点日志......
  • 链表
    链表链表算法与数据结构目录这一节将着重知识讲解与代码实践链表的理论基础链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域......
  • 记录一次 MyBatis 批量插入的优化-BatchInsert
    记录在一次项目问题排查过程中,遇到在数据量大的情况下,向数据库批量插入非常耗时长的问题。1、分析首先,代码是在service中,采用的是for循环调用insert语句的方式:for......
  • shell 循环往文件某行插入内容
    脚本~]$cat1.sh#!/bin/bashhang=$(expr`cat2.txt|wc-l`-1)contens=$(egrep^aaa.txt)IFS=$'\n\n'foriin$contensdosed-i"$hanga$i"2.txt......
  • 拉链表
    CREATETABLE`policy`(`policy_no`varchar(30)NOTNULLCOMMENT'保单号',`identify_number`varchar(22)NOTNULLCOMMENT'身份证号',`insurance_amount`dec......
  • kubernetes集群节点多网卡,calico/flannel组件如何指定网卡
    kubernetes集群节点多网卡,calico/flannel组件如何指定网卡1、calico如果有节点是多网卡,所以需要在deploy的env指定内网网卡  spec:containers:-env:-......
  • 链表从指定节点后方插入新节点
    在指定数据后面插入节点的案例:在Test结构体(这个结构体的data为2)后面插入一个Test结构体(data=6)#include<stdio.h>structTest{intdata;structTest*next;};......
  • excel隔行插入一行
    1、准备好数据源 2、在C列准备辅助列(辅助列的值需要为递增或递降)  3、选择辅助列C列,点击“排序”------>“升序”即可 4、效果,最后复制到交换机中即可实现批......