计算机需要沉淀 2021-09-28 10:23 采纳率: 100%
浏览 19
已结题

数据结构链表的创建和运行

1
有头链表和无头链表分别怎样创建?(代码)

2
LinkList p=L;
j=1;
while(p&&j小于i-1){p=p.next;j++;}

LinkList p=L.next;
j=1;
while(p&&j小于i-1){p=p.next;j++;}

上面代码和下面有什么区别?

  • 写回答

1条回答 默认 最新

  • 偷窃月亮的贼 2021-09-28 17:44
    关注

    头结点是为了操作的统一与方便而设立的,放在第一个元素结点之前,其数据域一般无意义(当然有些情况下也可存放链表的长度、用做监视哨等等)。

    • 有头节点的链表
    struct ListNode{
        int val;
        ListNode *next;
        ListNode(int x) : val(x), next(nullptr){
        }
    }
    // 尾差法
    ListNode* CreateList(int length){
        if (length < 1)
            return nullptr;
        ListNode *head = new ListNode(length);
        ListNode *s = head;
        int k = 1;
        ListNode *r = nullptr;
        srand(unsigned(time(0)));
        while (k <= length){
            r = new ListNode(rand());
            s -> next = r;
            s = r;
            k++;
        }
        s -> next = nullptr;
        return head;
    }
    
    • 无头结点的链表:
    struct ListNode{
        int val;
        ListNode *next;
        ListNode(int x) : val(x), next(nullptr){
        }
    }
     
    // 头插法
    ListNode* CreateList(int length){
        if (length < 1)
            return nullptr;
     
        srand(unsigned(time(0)));
        ListNode *head = new ListNode(rand()); 
        ListNode *s = head, *r = nullptr;
        int k = 1;
        while (k <= length - 1){
            r = new ListNode(rand());
            s -> next = r;
            s = r;
            k++
        }
        s -> next = nullptr;
        return head;
    }
     
     
    // 将头结点放在循环里面
    ListNode* CreateList(int length){
        if (length < 1)
            return nullptr;
     
        srand(unsigned(time(0)));
        ListNode *head = nullptr, *s = nullptr, *r = nullptr;
        int k = 1;
        while (k <= length){
            r = new ListNode(rand());
            if (head == nullptr)
                head = r;
            else
                s -> next = r;
            s = r;
            k++
        }
        s -> next = nullptr;
        return head;
    }
    

    第2题,上面的是没有头节点的,下面的是有头节点的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月9日
  • 已采纳回答 10月1日
  • 创建了问题 9月28日

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测