Problem 1178 报到--建立链表………………数构
Accepted: 3314 Total Submit: 4613Time Limit: 1000ms Memony Limit: 32768KB
Description
新生报到开始了,需要登记的信息是:姓名、性别、来的地方、已安排的学号。请你编程将新生的信息输入电脑,然后按原顺序输出。请用链表完成。新生的结构定义为:
struct student
{
__int64 num;
char sex;
char name[10];
char come_from[20];
struct student *next;
};
struct student
{
__int64 num;
char sex;
char name[10];
char come_from[20];
struct student *next;
};
Input
输入有若干行,每行一位学生的信息。
Ouput
按原顺序输出学生的情况。
Sample Input
20100862150 m zhang fuzou
20100862178 f li shanghai
20100862154 m wu sanming
20100862155 f wang zhejian
20100862170 f chen zhangzhou
Sample Output
20100862150 m zhang fuzou
20100862178 f li shanghai
20100862154 m wu sanming
20100862155 f wang zhejian
20100862170 f chen zhangzhou
Source
Zmh#include <iostream>
#include <string>
using namespace std ;
#include <math.h>
struct student
{
string num;
char sex;
string name;
string come_from;
student * next;
};
student* head ;
student* creat()//创建链表
{
student* p ;
//student * head ;
student* q = NULL ;
head = q;//Q为当前节点,每次进来数据,都移到下一个节点上
p = new student ;//p指针当介质 ,输入数据yong
while(cin>>p->num>>p->sex>>p->name>>p->come_from)
{
if(head == NULL)//当头指针为空时,第一个数据就为头指针
{
head = p ;
q = p ;
}
else
{
q->next = p ;
q = q->next ;
}
p = new student ;//申请空间,存放数据
}
delete p ;//释放节点
q->next = NULL;
return head ;
}
void print(student* head)//输出
{
student* p ;
p = head ;
while(p != NULL)
{
cout<<p->num<<" "<<p->sex<<" "<<p->name<<" "<<p->come_from<<endl ;
p = p->next ;
}
}
int main()
{
student* root;
root = creat();
print(root);
return 0 ;
}