这是C语言标准版吧,不涉及C++中的&引用. 代码: #include <stdio.h> #include <stdlib.h> #include <string.h> #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; }