C语言 重复打印链表最后输入的元素



我正在尝试实现一个链表。程序将要求一个数字,直到输入负数,同时将这些数字添加到链表中。但是当我尝试打印链表时,输入到链表中的最后一个元素会重复打印。如果我输入数字 1,2,3,数字 3 将重复打印

#include<stdio.h>
#include<stdlib.h>
struct node{
int data;
struct node* next;
};
struct node* head;
void print(){
for(struct node* ptr = head;ptr!=NULL;ptr=ptr->next){
    printf("the num %dn",ptr->data);
    }
}
int main(){
head = NULL;
struct node* temp = (struct node*)malloc(sizeof(struct node));
int i;
do{
    printf("enter a numbern");
    scanf("%d",&i);
    if(i<0)
        break;
    temp->data = i;
    temp->next = NULL;
    if(head == NULL){
        head = temp;
    }else{
        temp->next = head;
        head = temp;
    }
}while(i>=0);
print();
return 0;
}
struct node* temp = (struct node*)malloc(sizeof(struct node));

这条线是在循环完成的,所以你的所有元素都使用相同的存储单元......在循环移动分配。

do{
    printf("enter a numbern");
    scanf("%d",&i);
    if(i<0)
        break;
    struct node* temp = malloc(sizeof(struct node));
    temp->data = i;
    temp->next = NULL;

相关内容

  • 没有找到相关文章

最新更新