单一节点列表练习(工作不正常)

时间:2015-02-17 00:56:52

标签: c singly-linked-list

我正在为即将到来的数据结构考试而学习,我正在处理我的代码问题。当我在Dev C ++中运行它时show_list()没有显示任何内容......当我编译并运行它时linux show_list()工作正常但在此功能之后我的屏幕显示捶打。

这是我的代码

#include <stdio.h>
#include <stdlib.h>


typedef struct student
{
    char name[100];
    int code;
    float grd;
    struct student *next;
}student;
student *head;
student *tail;


void show_list();
void add_list_end(const student *stud_ptr);


int main()
{
    int code;
    float grd;
    student *ptr,stud;
    head=NULL;

    fflush(stdin);
    printf("Name:");
    gets(stud.name);
    printf("Code:");
    scanf("%d",&stud.code);
    printf("Grade:");
    scanf("%f",&stud.grd);

    add_list_end(&stud);
    show_list();
}

void add_list_end(const student *stud_ptr)
{
    student *nn;
    nn=(student *)malloc(sizeof(student));
    *nn=*stud_ptr;
    if(head==NULL)
    {
        head=tail=nn;
        return;
    }
    else
    {
        tail->next=nn;
        tail=nn;
    }
}

void show_list()
{
    student *ptr;
    ptr=head;
    while(ptr!=NULL)
    {
        printf("Name:%s\n",ptr->name);
        printf("Code:%d\n",ptr->code);
        printf("Grade:%.2f\n",ptr->grd);
        ptr=ptr->next;
    }   
}

1 个答案:

答案 0 :(得分:0)

main()功能中忘了分配

    stud.next = NULL;

因此show_list()跟随一个不确定的next指针。