#include
#include
#include
#define OK 1
#define ERROR 0
typedef struct
{
char *Name;
char *Number;
char *Sex;
int Age;
char *Class;
char *Evaluate;
} StudentRecord;
typedef struct LinkedStack
{
StudentRecord Record;
struct LinkedStack *next;
} Lin_Sta;
int InitStack(Lin_Sta **StackHead)
{
*StackHead = (Lin_Sta*)malloc(sizeof(Lin_Sta));
if(!*StackHead)
{
exit(ERROR);
}
(*StackHead)->next = NULL;
return OK;
}
void Copy_Record(StudentRecord *record1,char *name,char *number,
char *sex,char *clas,char *evaluate,int age)
{
record1->Name = (char *)malloc(strlen(name) + 1);
strcpy(record1->Name,name);
record1->Number = (char *)malloc(strlen(number) + 1);
strcpy(record1->Number,number);
record1->Sex = (char *)malloc(strlen(sex) + 1);
strcpy(record1->Sex,sex);
record1->Class = (char *)malloc(strlen(clas) + 1);
strcpy(record1->Class,clas);
record1->Evaluate = (char *)malloc(strlen(evaluate) + 1);
strcpy(record1->Evaluate,evaluate);
record1->Age = age;
}
void CreatStack(Lin_Sta *StackHead,int Length)
{
Lin_Sta *p,*head = StackHead;
char name[80],number[18],sex[13],clas[80],evaluate[80];
int age;
while(Length --)
{
p = (Lin_Sta*)malloc(sizeof(Lin_Sta));
scanf("%s%s%s",name,number,sex);
scanf("%d",&age);
scanf("%s%s",clas,evaluate);
Copy_Record(&p->Record,name,number,
sex,clas,evaluate,age);
p->next = head->next;
head->next = p;
}
}
/**
**/
void display(Lin_Sta *StackHead)
{
Lin_Sta *p = StackHead->next;
while(p->next != NULL)
{
printf("%s %s %s %d %s %s/n",p->Record.Name,p->Record.Number,p->Record.Sex,
p->Record.Age,p->Record.Class,p->Record.Evaluate);
p = p->next;
}
printf("%s %s %s %d %s %s",p->Record.Name,p->Record.Number,p->Record.Sex,
p->Record.Age,p->Record.Class,p->Record.Evaluate);
}
int main()
{
Lin_Sta *StackHead;
int Length;
scanf("%d",&Length);
InitStack(&StackHead);
CreatStack(StackHead,Length);
display(StackHead);
free(StackHead);
StackHead = NULL;
return 0;
}