【发布时间】:2015-10-26 06:34:16
【问题描述】:
我正在尝试在 c 中实现链表。在元素的插入中,如果head不为NULL,我尝试在链表的开头添加一个节点 这是我的代码
#include<stdio.h>
#include<stdlib.h>
struct Node{
int data;
struct Node* next;
};
struct Node* head ;
void insert(int data){
struct Node* temp = (struct Node*) malloc(sizeof(struct Node));
temp->data = data;
if(head!=NULL){
temp = head;
head = temp;
}
temp -> next = NULL;
head = temp;
}
void print(){
struct Node* temp = head;
while(temp!=NULL){
printf("%d \n",temp->data);
temp = temp->next;
}
}
int main(){
head = NULL;
insert(2);
insert(3);
insert(5);
print();
return 0;
}
但是在打印功能上,我只得到 2 作为输出。可能是什么原因?
【问题讨论】:
-
head!=NULL时您的插入功能无法正常工作。您正在丢弃分配的temp节点。推荐阅读:How to debug small programs。在这种情况下,如果您在insert()中添加一些打印,或者只是在将更改绘制到列表时手动考虑程序,您可能会自己解决问题。
标签: c pointers linked-list singly-linked-list