链表建立
上一节的练习题会做不?成功做出来的同学恭喜你,可以跳过这一节。没做出来的,也恭喜你, 学完这一节你也可以的。这一节我们让用户输入节点内容,用户想建立几个节点就建立几个节点。 我们把建立链表的操作抽象成一个函数CreateList,实现如下:
student \* createList()
{
int n;
student \*pstu;
student \*pre=NULL;
cout<<"请输入节点个数:"<<endl;
cin>>n;
while(n)
{
pstu = new student;
cout<<"请输入学号 姓名 成绩"<<endl;
cin>>ps->id>>ps->name>>ps->score;
pstu->next=pre;
pre=pstu;
n--;
}
return pstu;
}
函数CreateList每录入一个节点的信息,就把这个节点放在最开头,也就是说用户输入的第一个节点是链表的最后一个节点,最后输入的节点是链表的首节点。第4行的指针变量pre是用来指向上一个变量的,对于用户输入的第一个节点来说上一个节点是NULL。
while循环中每次都new一个student对象,用户输入的信息将录入到这个对象。还记得用指针取成员变量是'->',用变量名取成员变量是'.'不?学过的好好记住哈~关键是下面指针部分的操作:
pre中存放的是上一个节点的地址,所以pstu->next=pre之后,当前节点的指针就会指向上一个节点。
第14行的操作,把当前节点的地址赋值给pre,也就是让pre指向当前节点,这是再为下一次输入做准备啊!毕竟对于下一个节点来说,当前节点就是上一个节点了~~
n是用来控制循环的。最后一个节点也就是首节点,程序最后返回指向首节点的指针pstu