题目:编写一个包含学生信息的链表结构,并且将链表中的信息进行输出。
(本题中主要应用了链表的初始化,创建和输出)
1.对单链表的初始化
typedef struct node{
int number;
char name[20];
struct node*next;
}Node,*Linklist;
Linklist Initlist()
{
Linklist head;
head=(Node*)malloc(sizeof(Node));
head->next=NULL;
return head;
}
2.用尾插法创建单链表
void CreatByRear(Linklist head)
{
Node *r,*s;
char name[20];
int number;
r=head;
printf("请输入学生的姓名和学号:\n");
while(1)
{
scanf("%s",name);
scanf("%d",&number);
if(number==0)
break;
s=(Node*)malloc(sizeof(Node));
strcpy(s->name,name);
s->number=number;
r->next=s;
r=s;
}
r->next=NULL;
}
3.输出单链表
void Output(Linklist head)
{
Node *p;
p=head->next;
printf("\n***********学生信息如下************\n");
while(p)
{
printf("姓名:%s\n",p->name);
printf("学号:%d\n\n",p->number);
p=p->next;
}
}
4.完整代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct node{
int number;
char name[20];
struct node*next;
}Node,*Linklist;
Linklist Initlist()
{
Linklist head;
head=(Node*)malloc(sizeof(Node));
head->next=NULL;
return head;
}
void CreatByRear(Linklist head)
{
Node *r,*s;
char name[20];
int number;
r=head;
printf("请输入学生的姓名和学号:\n");
while(1)
{
scanf("%s",name);
scanf("%d",&number);
if(number==0)
break;
s=(Node*)malloc(sizeof(Node));
strcpy(s->name,name);
s->number=number;
r->next=s;
r=s;
}
r->next=NULL;
}
void Output(Linklist head)
{
Node *p;
p=head->next;
printf("\n***********学生信息如下************\n");
while(p)
{
printf("姓名:%s\n",p->name);
printf("学号:%d\n\n",p->number);
p=p->next;
}
}
int main()
{
Linklist ha;
ha=Initlist();
CreatByRear(ha);
Output(ha);
}