zoukankan      html  css  js  c++  java
  • 简单的线性表2

    今天就来讲一讲插入节点

      对我来说链表重要的是画图,有了图才能理解,所以我会根据自己的理解附上图解,便于理解。

      先跟增加节点对比

      尾增:先开辟空间,填充数据

          然后连接链表,把指针移动到最后一个节点再连接新的节点

                      

         

    void AddListNode(Pt_Stu plist) 
    {
        Pt_Stu pnode = (Pt_Stu)malloc(sizeof(STU));
    printf("input number:"); scanf("%d", &pnode->number); printf("input name:"); scanf("%s", pnode->name); printf("input score:"); scanf("%f", &pnode->math); pnode->pnext = NULL; while (plist->pnext != NULL) { plist = plist->pnext; } plist ->pnext = pnode; }

      

      头增:同样的开辟空间,填充数据,但是是从头部增加,也就是空头节点的下一个节点 

             显然头增法的代码会简单一点,速度也更快,不需要把指针一直往后移动 ,但是顺序与你输入的顺序是相反的

    pnode->pnext = plist->pnext;
        plist->pnext = pnode;

      而插入节点与增加类似,只不过是在链表给定位置的地方增加一个节点罢了

     看样子同样是开辟空间,填充数据,连接链表

    void InsertNode(Pt_Stu plist,int pos)//pos代表节点在链表中的位置
    {
        Pt_Stu pnode = (Pt_Stu)malloc(sizeof(STU));
    
        printf("input number:");
        scanf("%d", &pnode->number);
        printf("input name:");
        scanf("%s", pnode->name);
        printf("input score:");
        scanf("%f", &pnode->math);
        pnode->pnext = NULL;
        for(int i=0;i<pos-1;i++){
            plist=plist->pnext;//pos-1是为了到插入位置的前一个节点
            pnode->pnext=plist->pnext;//新节点的下一个节点指向原先插入位置的节点
            plist->next=pnode;//前一个位置的节点指向新的节点
       }
    }

      而修改节点就和删除类似了,找到指定位置的节点,可以把数据重新赋值,也可利用拷贝字符串来解决。

      ps:说起拷贝字符串,我在VS2019里直接用会因为没有加''运行会报错,我会选择自己写一个拷贝字符串来解决。

    代码如下

    void StrCpy(char* strOld, char  const* strNew)
    {
        int i; 
        for (i = 0; i < strlen(strNew); i++)
        {
            strOld[i] = strNew[i];
        }
        strOld[strlen(strNew)] = '';
    }

      

            带有空头结点的链表就到这了,事实上我们可以发现只要脑子里面有图,链表的增删查改插入我们都可以做到,方法也都大同小异

  • 相关阅读:
    Ubuntu-Tensorflow 程序结束掉GPU显存没有释放的问题
    python 批量修改文件名
    linux 查看文件夹文件大小数目等信息
    linux sudo 系统环境变量 用户环境变量
    python安装h5py
    安装labelImg
    pyqt5 sip 段错误问题
    python:dist-packages && site-packages
    lua学习:lua中“类”的实现
    lua笔记
  • 原文地址:https://www.cnblogs.com/wst-blog/p/12709724.html
Copyright © 2011-2022 走看看