【问题标题】:Creating Linked List of Nodes创建节点链表
【发布时间】:2016-04-11 20:55:32
【问题描述】:

我想编写一个 main 函数,它将创建节点的链表,其中每个节点在除了下一个字段之外的两个字段中保存两个 int 值。(在主类之外创建一个结构节点。)第一个 int是节点数的计数。另一个 int 是斐波那契数列中从 1 开始的下一个数字。继续在列表中添加节点,直到新节点中第 2 个字段中的值超过第 1 个字段中的值 * 1000。

在添加每个节点时,将计数输出到一行。 (不要在链表中添加最后一个节点。)它应该基本上打印出第二个字段中的值,在列中,每行 5 个。

输出应如下所示:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

1   1    2     3     5
8   13   21    34    55
89  144   233   377   610   
987 1597  2584  4181  6765
10946 17711

我知道如何制作结构节点,我知道斐波那契代码

#include <stdio.h>
#include <stdlib.h>

typedef struct node {
  int x;
  int y;
  struct node * next;
} node_t;

int main()
{
  int first = 0, second = 1, nxt, c;
  int num = 0;


    for ( c = 1 ; c < 23 ; c++ )
      {
    if ( c <= 1 )
      nxt = c;
    else
      {
        nxt = first + second;
        first = second;
        second = nxt;
      }
    printf("%d\n", nxt);

      }

  return 0;
}

基本上需要节点部分的帮助。

非常感谢任何帮助或指导。

【问题讨论】:

    标签: c linked-list nodes


    【解决方案1】:

    创建节点

    应使用动态内存分配(malloc)创建单个节点,请参见 create_node()

    链表创建

    需要一个指向第一项的指针,另一个指向 curr_item 的指针。第一项必须存储在 first_node 中。创建每个项目后,必须将其附加到当前项目。 curr_node 必须更新为指向最后一项。下面的代码说明了一个示例链表的创建。

    node_t *create_node(int nr, int fib );
    int main()
    {    
          node_t *first_node=NULL; /* First node */
          node_t *curr_node=NULL;  /* Current node */
          node_t *tmp_node=NULL;
          /* Creating a list of 20 items*/
          for(i=0;i<20;i++){
            if (first_node==NULL){
              curr_node=create_node(i,i*10);
              first_node=curr_node;
            }
            else{
              curr_node->next=create_node(i,i*10); /*appending to current */
              curr_node = curr_node->next;         /* make it as current */
            }
          }
          i=0;
          /* Traversing Linked list */
          for(tmp_node=first_node;tmp_node!=NULL;tmp_node=tmp_node->next){
             printf("%d --- %d\n",tmp_node->x, tmp_node->y);
             i++;
          }
        }
        node_t *create_node(int nr, int fib ){
            node_t *node;
            node = (node_t*) malloc(sizeof(node_t));
            node->x=nr;
            node->y=fib;
            node->next=NULL;
            return node;    
    
          }
    

    网上有很好的资源,google一下“c链表实现”

    【讨论】:

      猜你喜欢
      • 2017-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-22
      • 2017-07-19
      • 1970-01-01
      相关资源
      最近更新 更多