标题:单链表(尾插入)创建链表时的问题
取消只看楼主
卡卡3315
Rank: 1
等 级:新手上路
帖 子:11
专家分:8
注 册:2019-6-24
结帖率:100%
已结贴  问题点数:20 回复次数:0 
单链表(尾插入)创建链表时的问题
程序代码:
#include<stdio.h>
#include<stdlib.h>

typedef struct student{
    int num;
    struct student *next;
}Node;

typedef struct _List{
    Node* head;
}List;//结构用来存储头指针 

void add(List *Plist,int number);//创建链表的函数 
void print(List *Plist);//遍历链表的函数 

int main(void)
{   List list;
    list.head = NULL;
    int number;
    do{
        scanf("%d",&number);
        if(number!=-1){
            add(&list,number);
        }
    }while(number!=-1);
    printf("遍历整个链表\n"); 
    print(&list);//打印整个链表
}
void print(List *Plist)
{   Node *P = NULL;
    for(P = Plist->head; P; P = P->next){
        printf("%d  ",P->num);
    }
    printf("\n");
}
void add(List *Plist,int number)
{
    Node *P = (Node*)malloc(sizeof(Node));
    P->num = number;
    P->next = NULL;
    Node *last = Plist -> head;(这里我原本写的是Node *last = NULL;)
    if(last){
        while (last->next){
            last = last->next;
        }
        last->next = P;
    } else {
        Plist->head = P;
    }
}



在代码中标记的地方, Node *last = Plist -> head; 这一行我原本写的是Node *last = NULL;,因为在main里面list.head就是NULL,反正都是NULL为什么不能直接给Node *last赋上NULL呢

代码结果如下:


这个是错误的结果,遍历只显示最后一个


正确的是显示全部的

忘了free了

[此贴子已经被作者于2020-4-10 23:41编辑过]

搜索更多相关主题的帖子: List Node head number NULL 
2020-04-10 23:39



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-500987-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.118882 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved