我在创建链接列表时遇到问题

时间:2019-06-28 23:10:03

标签: c

我需要创建几个链接列表,这些列表包含结构“ island”(与typedef“ Insel”一起使用)作为数据。每个岛屿都拥有有关该特定岛屿的一些信息。我想将链表的名称(我想也是头节点)和指向孤岛的指针(孤岛的数据存储在数组中)作为我的Node函数的参数传递。问题在于,在运行插入功能后,指针“ list1”仍然以某种方式为空。

我的节点函数的代码:

Node * Node_New(Insel * inselnr)
 {
    Node * newNode;
    newNode = (Node*)malloc(sizeof(Node));
    newNode->insel=inselnr;
   if(newNode==NULL){
    printf("No memory\n");
    }else{
    newNode->next = NULL;
    newNode->prev = NULL;
  }
   return newNode;
}

void Node_Insert(Node * theNode, Insel * inselnr){
Node * newNode;
newNode = Node_New(inselnr);
if(newNode != NULL){
    if(theNode != NULL){
        newNode->next = theNode->next;
        theNode->next = newNode;
        newNode->prev = theNode;
        if(newNode->next != NULL)newNode->next->prev = newNode;
    }else{
        theNode = newNode;
    }
}
}

我在主程序中声明了

Node * list1=NULL;

所有功能之外

现在我要使用创建一个节点

Node_Insert(list1,&inselnr[0]);
Node_Insert(list1,&inselnr[1]);

我认为该函数将创建列表,我可以使用

void Output_List(Node * theList){
if(theList == NULL) printf("Error");

while(theList != NULL){
    Node * buffer = theList;
    while(buffer != NULL){
        Output_Insel(buffer->insel);
        buffer = buffer->prev;
    }
 }

以某种方式,我总是感到“错误”,因此似乎“插入节点”功能无法正确创建列表。

0 个答案:

没有答案