链接列表程序显示学生标记
问题描述:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void Insert();
void DisplayList();
struct Student
{
char Name[10];
int Marks;
struct Student *Next;
} *Start;
int main()
{
Start = NULL;
int Choise;
while (1)
{
printf("enter number to choose ");
scanf_s("%d", &Choise);
switch (Choise)
{
case 1:
Insert();
break;
case 3:
DisplayList();
break;
default:
printf("Incorrect assignment Press relevant key :");
}
}
}
void Insert()
{
struct Student *Temp, *current=NULL;
Temp = (struct Student *) malloc(sizeof(struct Student));
printf("Enter Name Of Student");
scanf_s("%s",&Temp->Name);
printf("Enter Marks Of Student");
scanf_s("%d", &Temp->Marks);
Temp->Next = NULL;
if (Start == NULL)
{
Start = Temp;
Temp->Next = NULL;
}
else
current = Start;
while (current->Next != NULL)
{
current = current->Next;
current->Next = Temp;
}
}
void DisplayList()
{
struct Student *current, *Temp;
current = Start->Next;
if (Start == NULL)
{
printf("No Element in the list");
}
else
{
for (current = Start; current != NULL; current = current->Next)
{
printf("The List are\n");
printf_s("%d",current->Marks);
}
}
这是一个为单链表编写的程序。当我显示列表时,它只给出列表中的一个元素。每当我试图打印链表的元素,它只给出一个元素输出 我做了什么错误请帮忙?链接列表程序显示学生标记
答
变化
else
current = Start;
while (current->Next != NULL)
{
current = current->Next;
current->Next = Temp;
}
到
else {
current = Start;
while (current->Next != NULL)
{
current = current->Next;
}
current->Next = Temp;
}
和
scanf_s("%s", Temp->Name, sizeof(Temp->Name)); //remove & and add size(see Amnon's answer)
+0
感谢您解决这个问题 – 2014-11-22 23:31:48
答
当使用scanf_s
这是scanf函数的安全版本,将有望通过不仅是地址缓冲区,但其大小作为下一个参数,即:
scanf_s("%s", Temp->Name, _countof(Temp->Name));
您可以阅读http://msdn.microsoft.com/en-us/library/w40768et.aspx
更多关于它的代码的另一个问题是,你初始化current
与NULL
但随后试图访问其Next
场。
答
更改代码在这里:
else
current = Start;
while (current->Next != NULL)
{
current = current->Next;
current->Next = Temp;
}
这样:
else {
current = Start;
while (current->Next != NULL)
{
current = current->Next;
}
current->Next = Temp;
temp->next=NULL;
}
你忘记在接下来的指针加空,因此你只得到一个输出。
尝试使用调试器。正确格式化你的代码也可能有帮助。 – 2014-11-22 21:59:15