首页 > 其他分享 >头歌-01链表及其使用

头歌-01链表及其使用

时间:2023-09-25 09:25:03浏览次数:36  
标签:node 结点 01 return 指向 next 链表 头歌 NULL

第一题

#include "linearList.h"

node *insertTail(node *h, node *t)
{
    // 请在此添加代码,补全函数insertTail
    /********** Begin *********/
    if(h==NULL)
    {
        t->next=NULL;
        return t;
    }
    node *p=h;
    while(p->next)
    {
        p=p->next;
    }     
     p->next=t;
       t->next=NULL;
        return h;
    /********** End **********/
}

 

第二题
 #include "linearList.h"

node * insertHead(node *h, node *t)
{
    // 请在此添加代码,补全函数insertHead
    /********** Begin *********/
    t->next=h;
    return t;
    /********** End **********/
}

 

第三题
 #include "linearList.h"

node * search(node * h, int num)
{
    // 请在此添加代码,补全函数search
    /********** Begin *********/
while(h)
    {// h为真,即h指向的结点存在
        if(h->data == num)
        {
              return h;
        } 
        h = h->next;  // 将该结点的指针域赋值给h,h就指向了下一个结点
    }
    return NULL; 
    /********** End **********/
}

 

第四题
 #include "linearList.h"

node * delAt(node * h, int i)
{
    // 请在此添加代码,补全函数delAt
    /********** Begin *********/
    if(i<0) //序号非法,不删除
 {
  return h;
 }
 node *p=NULL, *q = h; // 定位删除结点,试图让q指向要删除结点,p指向其前面的结点
 for(int k=0;k<i;k++)
 {
  if(q->next==NULL) //后面没有结点了,序号非法
   return h;
  p=q;
  q=q->next;
 }
 if(p) //p指向的结点存在,不是删除首结点
 {
  //删除q指向的结点,让p指向结点的指针域指向q的后续结点
  p->next = q->next;
  //释放空间
  delete q;
  return h;
 }
 else //删除首结点
 {
  h = q->next; //下一个结点成了首结点
  //释放空间
  delete q;
  return h;
 }
    /********** End **********/
}

 

第五题
 #include "linearList.h"

node * delHas(node * h, int n)
{
    // 请在此添加代码,补全函数delHas
    /********** Begin *********/
     node *p = NULL, *q = h;  // p为要删除结点的前结点,q指向要删除结点
    while(q)
    {// h为真,即h指向的结点存在
        if(q->data == n)
            break; // 找到了
        if(q->next == NULL)  // 后面没有结点了,没有结点满足条件
            return h;  // 不删除,直接返回
        // 继续往后找,两个指针一起后移
        p = q;
        q = q->next;
    }
    // 删除q指向的结点
    if(p == NULL)  // 删除头结点
    {
        h = q->next;  // 下一个结点变成头结点
        delete q;  // 删除结点
        return h;
    }
    // 不是头结点
    p->next = q->next;  // 把q指向结点的指针域(q后面结点的地址)赋值给p指向结点的指针域
    return h;
    /********** End **********/
}

 

第六题
 #include "linearList.h"

int listLength(node * h)
{
    // 请在此添加代码,补全函数listLength
    /********** Begin *********/
    int n = 0;
    while(h)
    {
        n++;
        h = h->next;
    }
    return n;

    /********** End **********/
}

标签:node,结点,01,return,指向,next,链表,头歌,NULL
From: https://www.cnblogs.com/haggard/p/17727132.html

相关文章

  • 01_Bootstrap基础组件01
    1什么是Bootstrap?Bootstrap,来自Twitter,是目前很受欢迎的前端框架。Bootstrap是基于HTML、CSS、JavaScript的,它简洁灵活,使Web开发更加快捷。它对HTML、CSS和JavaScript进行了封装,使它们使用起来更方便。我们只需要使用它已经设定好的类,或规则,即可快速应用它提供的功能。......
  • 两两交换链表中的节点、删除链表倒数第N个结点、链表相交、环形链表
    题目要求LeetCode24两两交换链表中的节点LeetCode19删除链表的倒数第N个结点LeetCode面试题02.07链表相交LeetCode142环形链表II题目思路24两两交换链表中的节点  本题采用具有虚拟头结点的链表来写,卡哥的示意图如下:  首先要交换的两个链表的前一个结点,然后修改指......
  • Java连接MSSQL2012数据报TLS10 is not accepted by client preferences [TLS13, TLS12
    这一问题好像是因为Java新版本禁用了些老的加密算法引起的,解决方法为修改java.security文件里的配置信息即可。我用的是Java21,在安装目录 Java\jdk-21\conf\security下找到java.security文件,用记事本打开,搜索TLSv1,大概在752行的位置有如下配置信息:jdk.tls.disabledAlgorithm......
  • 合集:NJPC2017
    太长了不放缺省源了,代码都只有主程序部分,不知道这个风格怎么样。个人认为难度顺序:A<B<C<E<F<H<D<G。A入力フォーム/洛谷/AT对\(L\)和\(|S|\)取较小值,输出前这些位即可,复杂度\(\mathcalO(\min(L,|S|))\)。namespaceLgxTpre{staticconstintMAX=5......
  • 20211301 学习笔记3
    20211301《Unix/Linux系统编程》学习笔记3学习目标总结一下一门程序设计语言有哪些必备的要素和技能?这些要素和技能在shell脚本中是如果呈现出来的?教材知识总结10.1sh脚本定义:sh脚本是一个包含sh语句的文本文件、命令解释程序sh要执行该语句sh:sh是解释程序,逐行......
  • P3514 [POI2011] LIZ-Lollipop
    很神奇的题题意:给你一个由\(0\)和\(1\)组成的序列,给出\(q\)个询问,每次询问是否有原序列是否有总和为\(x\)的子段。考虑递推,但是小答案对大答案的影响不好算。考虑大区间对小区间的影响。设当前区间为\([l,r]\),总和为sum,有\(4\)种情况\(a[l]=2,a[r]=2\);这是无......
  • P1967 [NOIP2013 提高组] 货车运输
    P1967[NOIP2013提高组]货车运输因为可能成环,这样可能导致到达点的最小权值不一,所以用最小生成树的方法重新建图然后我是利用倍增的思想建立从i点开始,到上面点的距离ff和最小权值ww因为最小权值不好直接建立,所以不如最后统一建立最后就是寻找最近公共祖先的模板了一组hack......
  • P5268 [SNOI2017] 一个简单的询问
    一个简单的询问显然这个询问并不简单如果做过莫比乌斯反演入门题problemb就会想到利用容斥将询问拆成四个那么我们现在的问题变成如何求[1,l][1,r]两个区间之间的答案,那么也是直接用莫队即可,只是维护的是两个区间的右端点,和原来的莫队有一些不一样,但是大体相同。#include<......
  • Some Recent Thoughts Wrritten By NiuJiawen-2019141490165
    Recently,manystudentswhoarejunioryeararetakingpartininterviewsforexemptstudents.Somehaveobtainedsatisfactoryoffers,whereas,othersthinkitistoohardtogetawonderfuloffer. Andthereisnodoubtthatthelatterwillbefrustrated......
  • ciscn_2019_c_1 题解
    main函数如下:int__cdeclmain(intargc,constchar**argv,constchar**envp){intv4;//[rsp+Ch][rbp-4h]BYREFinit(argc,argv,envp);puts("EEEEEEEhhiii");puts("EEmmmmmmm......