C++编程入门(二) 互动版

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

链表建立

上一节的练习题会做不?成功做出来的同学恭喜你,可以跳过这一节。没做出来的,也恭喜你, 学完这一节你也可以的。这一节我们让用户输入节点内容,用户想建立几个节点就建立几个节点。 我们把建立链表的操作抽象成一个函数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