在C语言下关于节点的增、删、改、查(链表)

在C语言下关于节点的增、删、改、查(链表)

一.整体介绍

1.该代码包括的节点的创建,如从头结点或者尾节点开始插入;到后面的如何创建动态节点;学会节点的使用最大的一点就是考察自己对于学生管理系统的更深层次的理解。

二.节点的创建

1.首先创建一个头结点为起始节点,创建新节点的原理就是判断这个头结点的下一个节点信息是否可以匹配到,如果可以匹配成功这该节点插入成功否则返回节点。

struct Test
{
   
       int data;
       struct Test *next; //定义一个指针变量
}; //结构体千万不能忘记分号

struct Test *insertFromfor(struct Test *head, int data, struct Test *new) //定义一个头结点和一个新节点的节点地址
{
   
       struct Test *p = head; //让头结点的地址等于P目前的地址
       if(p->data == data){
       //判断头结点的数据
             new->next = head;  //新节点的下一个地址等于头结点的行地址
       return new;  //否则返回到新节点的位置上      
       }
       
       while(p->next != NULL){
    //判断p的下一个地址是否为空
             
             printf("data=%d, point=%d\n",p->next->data,data); //打印两个数据,一个头结点的下一个地址指向该节点,另一个则为该节点数据。
       if(p->next->data == data){
     //如果头结点的下一个地址指向该地址就为该地址
             new->next = p->next;//新节点的下一个地址就是头结点的下一个节点
          printf("insert ok\n"); //打印信息,创建完毕
          return head;  //返回到头节点 
       }      
        p=p->next;
    }
    printf("no this data\n"); //没有查到消息
    return head;       
}

三.打印节点信息

1.打印出来所有创建的节点信息

void printLink(struct Test *head) //打印节点信息
{
   
      struct Test *point; //定义指针变量
      point = head;  //该地址指向头结点
      while(point != NULL){
     //如果这个地址为空
            point = point->next;  //该地址等于这个地址的下一个地址
      }
      putchar('\n');//换行
}  

四.从节点的后方插入新节点

1.首先判断头结点的位置是否是空节点,接下来在判断新节点的地址,紧接着输出头结点的下一个地址这位插入的该节点。

int insertFromBehind(struct Test *head, int data, struct Test *new)
{
   
       struct Test *p = head;
       while(p! = NULL){
    //判断头结点是否为空
            if(p->data == data){
     //如果头结点指向下一个数据就为这个数据
                 new->next=new;  //新节点的下一个节点地址信息为新节点最新地址
                 return 1;
            }
            p = p->next; //头结点新地址为头结点的下一个节点
       }
       return 0;
}

五.统计总共有几个节点

int getLinkTotalNodeNum(struct Test *head)//找到头结点,从头结点开始遍历
{
   
      int cnt = 0; //定义一个变量赋值为0
      struct Test *p = head;
      while(p != NULL){
    //判断头结点是否为空  
           cnt ++;  //该变量递增
      p = head->next; //头结点的节点为头结点的下一个节点    
      }
      return cnt;//返回这个统计变量
}

六.寻找节点

int searchLink(struct Test *head, int data)//寻找头结点和节点数据
{
   
     struct Test *p = head;
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值