【问题标题】:C 2D linked listC 二维链表
【发布时间】:2023-04-08 01:22:01
【问题描述】:

所以我有

struct node {
   int number;
   struct node *next;

 struct deck{
    int number;
    struct deck *next;
 };
};

我想创建一个二维链表。我怎样才能初始化这样的东西?

谢谢。

【问题讨论】:

  • 那么,你想制作一个链表的链表吗?喜欢列表>?甲板结构是怎么回事?请详细说明您的问题。
  • 是的,带链表的链表。甲板只是节点的名称。它的意思是一副纸牌。
  • 你想知道如何添加或删除节点吗?如果不是,为什么要使用链表而不是二维数组?

标签: c linked-list


【解决方案1】:

可能是这样的?

struct deck{
    int number;
    struct deck *next;
}
struct node {
   int number;
   struct node *next;
   struct deck *decks;
};

struct node *current_node, *new_node;
struct deck *current_deck, *new_deck;

current_node = (struct node *) malloc (sizeof(struct node));

for (i=0; i<number_of_nodes-1;i++) {
    current_deck = (struct deck* ) malloc (sizeof(struct deck));
    current_node->decks = current_deck;
    for (j=0; j<number_of_decks_in_node_i-1; j++) {
        new_deck = (struct deck* ) malloc (sizeof(struct deck));
        current_deck->next = new_deck;
        current_deck = new_deck;
    }
    new_node = (struct node *) malloc (sizeof(struct node));
    current_node->next = new_node;
    current_node = new_node;
}

【讨论】:

    【解决方案2】:

    首先,你需要把deck放到node外面。您拥有的是有效的 C++,但不是 C。

    你可以这样写:

    struct node {
       int number;
       struct node *next;
    };
    
    
    struct deck{
       struct node* nodes;
       struct deck* next;
    };
    

    【讨论】:

    • 我认为你在 struct node {...} 之后缺少一个分号
    • 原代码“几乎有效” C. 只需要命名“内部子结构”...codepad.org/nCh96ldh
    【解决方案3】:

    使用笛卡尔系统,你可以。 (顺便说一句,它还没有为我工作。尝试)

    struct node(){
        char data[10];
        node *x_link;
        node *y_link;
    }
    

    【讨论】:

      猜你喜欢
      • 2021-07-05
      • 2015-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-12
      • 1970-01-01
      相关资源
      最近更新 更多