计算机需要沉淀 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日

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料