我需要创建几个链接列表,这些列表包含结构“ 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;
}
}
以某种方式,我总是感到“错误”,因此似乎“插入节点”功能无法正确创建列表。