将节点添加到链接列表

时间:2016-10-04 21:05:10

标签: linked-list

我用C编写了我的第一个数据结构代码,我对自己做错了什么感到困惑。我只是试图将一个节点添加到链表的前面或空的链表,并在结尾处打印列表,这会导致分段错误。

#include<stdio.h>
#include<stddef.h>
#include<cstdlib>

/* Node representing each node of the linked list */
struct Node {
  int data;
  struct Node *next;
};

/* Fist node is always null as there are no nodes in the linked list to begin       with */
struct Node *first = NULL;


void add_node(int data) {
    struct Node *newptr = (Node *)malloc(sizeof(Node));
    // Check if the list is empty
   if (first == NULL){
       printf("The list is empty\n");
       newptr->data = data;
       newptr->next = NULL;
       first = newptr;
   }
   else {
       printf("Adding to the existing list\n");
       printf("Data in the first node is %d",first->data);
   }


}

void display() {
   struct Node *ptr;
   printf("In the display function\n");
   ptr = first;
   do {
      printf("Printing the data in the node %d",ptr->data);
      ptr= ptr->next;
   }while(ptr->next != NULL);

}

int main() {
   /*
    * Just try and add one node
    */
  int y = 100;
  printf("Adding a node \n");
  add_node(y);
  display();
  return 1;

}

1 个答案:

答案 0 :(得分:0)

我弄乱了显示功能,我稍微改了一下以获得正确的输出。

以下是新的显示功能:

void display(struct Node *first) {
    struct Node *ptr;
    printf("In the display function\n");
    ptr = first;
    do {
        printf("Printing the data in the node %d",ptr->data);
        ptr= ptr->next;
    }while(ptr != NULL);

}