简单单链表的建立
1.用户输入结点个数n后创建一个链表。
2.录入学号与C++成绩,输出至屏幕。
以下为源代码
#include <iostream>
using namespace std;
//首先定义结构体
struct student
{
int num; //学号
float score; //分数
struct student *next; //指向下一个结点的指针next
};
int main()
{
int i=0;
int n;
cout<<"请输入结点个数:";
cin>>n;
/*第一步定义结点指针*/
struct student *head, *p1, *p2;
//p1为指向新申请结点的指针
//p2为指向尾结点的指针
/*第二步开辟结点*/
head=p2=new (struct student); //new开辟第一个结点,使head和p2都指向它
cout<<"请输入第1个结点中的学号与分数:";
cin>>p2->num>>p2->score;
//1.创建有n个student类型结点的单向链表,n由用户从键盘输入
//2.遍历链表,将链表中的信息输出到屏幕
/*第三步遍历链表*/
for(i=1; i<n; i++) //循环创建链表中的结点
{
cout<<"请输入第"<<i+1<<"个结点中的学号与分数:";
p1=new (struct student); //new另一个结点,使p1指向它
cin>>p1->num>>p1->score; //给第一个结点赋值
p2->next=p1;
p2=p1;
if(i==n-1)
{
p2->next=NULL;
break;
}
}
p1=head;
cout<<endl<<"学号"<<'\t'<<"分数";
for(i=0;i<n;i++)
{
if(p1!=NULL)
{
cout<<endl<<p1->num<<'\t'<<p1->score;
p1=p1->next;
}
else
{
break;
}
}
return 0;
}
总结
单链表的建立看起来虽然简单,但实际自己真正从头到尾写的时候会有一些坎坷,多加练习,关于指针与结点的衔接和遍历问题应当认真考虑。