首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

编程疏失

2012-12-20 
编程出错中兴c语言培训上的一个例题,构造动态数据存储链表可是有一个错误#include stdio.h#include std

编程出错
中兴c语言培训上的一个例题,构造动态数据存储链表可是有一个错误
#include <stdio.h>
#include <stdlib.h>

typedef struct tagStudent
{
int m_nNumber;
char m_szName[20];
struct Student *m_pNext;
}Student;
Student *CreateLink(void);

void main(void)
{
Student *pHeader = NULL;
Student *pTmp = NULL;
pHeader = CreateLink();
pTmp = pHeader;
while (pTmp != NULL)
{
printf("Name :%s Number %d\n", pTmp->m_szName, pTmp->m_nNumber);
pTmp = pHeader;
}
}
Student *CreateLink(void)
{
Student *head = NULL, *end, *tmp;
int nNumber = 1;
do 
{
printf("输入学生学号(输入 0 或 负数表示结束:");
scanf("%d", &nNumber);
if (nNumber <= 0)
break;
tmp = (Student *)malloc(sizeof(Student));
tmp->m_nNumber = m_nNumber;
printf("输入学生姓名:");
scanf("%s", tmp->m_szName);
if (head == NULL)
{
head = tmp;
end = tmp;
}
else
{
end->m_pNext = tmp;
end = tmp;
}
end->m_pNext = NULL;
} while (m_nNumber > 0);
return head;
}
出错提示:
D:\C++\program\动态生成一个链表.cpp(9) : error C2371: 'Student' : redefinition; different basic types

[最优解释]


typedef struct tagStudent
{
int m_nNumber;
char m_szName[20];
struct Student *m_pNext;
}Student;

改成

typedef struct tagStudent
{
int m_nNumber;
char m_szName[20];
tagStudent *m_pNext;
}Student;

[其他解释]
#include <stdio.h>
#include <stdlib.h>

typedef struct tagStudent
{
int m_nNumber;
char m_szName[20];
struct tagStudent *m_pNext;
}Student;
Student *CreateLink(void);

void main(void)
{
Student *pHeader = NULL;
Student *pTmp = NULL;
pHeader = CreateLink();
pTmp = pHeader;
while (pTmp != NULL)
{
printf("Name :%s Number %d\n", pTmp->m_szName, pTmp->m_nNumber);
pTmp = pHeader;
}
}
Student *CreateLink(void)
{
Student *head = NULL, *end, *tmp;
int nNumber = 1;
do 
{
printf("输入学生学号(输入 0 或 负数表示结束:");
scanf("%d", &nNumber);
if (nNumber <= 0)
break;
tmp = (Student *)malloc(sizeof(Student));
tmp->m_nNumber = nNumber;
printf("输入学生姓名:");
scanf("%s", tmp->m_szName);
if (head == NULL)
{
head = tmp;
end = tmp;
}
else
{
end->m_pNext = tmp;
end = tmp;
}
end->m_pNext = NULL;
} while (nNumber > 0);
return head;
}

热点排行