当前位置: 首页 > 知识库问答 >
问题:

链表:结构中的结构?

须曜文
2023-03-14
//Specifcation file for the NumberList class
#ifndef NUMBERLIST_H
#define NUMBERLIST_H

class NumberList
{
private:
  //Declare a structure for the list
  struct ListNode
  {
     double value;         //The value in this node 
     struct ListNode *next;  //To point to the next node 
  };

  ListNode *head;      //List head pointer
public:
  //Constructor 
  NumberList();
   { head = nullptr; }

  //Destructor 
  ~NumberList();

  //Linked list operations
  void appendNode(double);
  void insertNode(double);
  void deleteNode(double);
  void displayList() const;
};
#endif

谁能给我解释一下这个吗?

共有1个答案

松俊美
2023-03-14

因此,我想知道在表示struct ListNode*next;的行中到底发生了什么

正如您后面提到的,它是一个指针,指向结构列表节点的下一个块。查看下图。listnodedatanext组成。next是指向下一个listnode单元格的指针。

它看起来是一个指针,那么为什么我们必须在这个指针上包含“struct”部分呢?

#include <iostream>

using namespace std;

class NumberList
{
private:
  //Declare a structure for the list
  struct ListNode
  {
     double value;         //The value in this node 
     ListNode *next;  //To point to the next node 
  };

  ListNode *head;      //List head pointer
public:
  //Constructor 
  NumberList() { head = nullptr; }
  
  NumberList(double val) {
      head = new ListNode();
      head->value = val;
  }

  //Destructor 
  ~NumberList();

  //Linked list operations
  void appendNode(double);
  void insertNode(double);
  void deleteNode(double);
  void displayList() {
      ListNode *curr = head;
      while(curr != nullptr) {
          cout << curr->value << " ";
          curr = curr->next;
      }
      cout << endl;
  }
};

int main()
{
    NumberList *nl = new NumberList(5.0);
    nl->displayList();
    return 0;
}
 类似资料:
  • 主要内容:链表的节点,头节点,头指针和首元节点,链表的创建(初始化)前面详细地介绍了 顺序表,本节给大家介绍另外一种 线性存储结构—— 链表。 链表,别名 链式存储结构或 单链表,用于存储逻辑关系为 "一对一" 的数据。 与顺序表不同,链表不限制数据的物理存储状态,换句话说,使用链表存储的数据元素,其物理存储位置是随机的。 例如,使用链表存储  ,数据的物理存储状态如图 1 所示: 图 1 链表随机存储数据 我们看到,图 1 根本无法体现出各数据之间的逻辑关系。对

  • 本文向大家介绍浅谈PHP链表数据结构(单链表),包括了浅谈PHP链表数据结构(单链表)的使用技巧和注意事项,需要的朋友参考一下 链表:是一个有序的列表,但是它在内存中是分散存储的,使用链表可以解决类似约瑟夫问题,排序问题,搜索问题,广义表 单向链表,双向链表,环形链表 PHP的底层是C,当一个程序运行时,内存分成五个区(堆区,栈区,全局区,常量区,代码区) 规定:基本数据类型,一般放在栈区 复合数

  • 前面介绍了图的邻接表存储法,本节继续讲解图的另一种 链式存储结构—— 十字链表法。 与邻接表不同,十字链表法仅适用于存储有向图和有向网。不仅如此,十字链表法还改善了邻接表计算图中顶点入度的问题。 十字链表存储有向图(网)的方式与邻接表有一些相同,都以图(网)中各顶点为首元节点建立多条链表,同时为了便于管理,还将所有链表的首元节点存储到同一数组(或链表)中。 其中,建立个各个链表中用于存储顶点的首元

  • 单链表 单链表就地翻转 递归算法: void reverse(struct list_node *head) { if(NULL == head || NULL == head->next) return; reverse1(head->next); head->next->next = head; head->next = NULL; } 非递归算

  • 链表的概念 逻辑结构上一个挨一个的数据,在实际存储时,并没有像顺序表(数组)那样也相互紧挨着。恰恰相反,数据随机分布在内存中的各个位置,这种存储结构称为线性表的链式存储。 每个元素本身由两部分组成: 本身的信息,称为 数据域 指向直接后继的指针,称为 指针域 内存分布 数据是连续存储的,一个挨着一个,连续的。链表是存储单元不一定是连续的, 主要分类 单向链表 循环链表 双向链表 双向循环链表 单向

  • 1.一般链表 图解链表: 链表 实现: <!doctype html> <html> <head> <meta charset="utf-8" > </head> <body> <script> function Node(ele) { this.ele=ele; this.next=null; } func