您的位置:首页 > 其它

结构体指针怎么用-简单的链表

2016-11-23 10:04 134 查看
目的:

用结构体指针做一个简单的链表

#include <iostream>
#include <string>
using namespace std;

struct student
{
int ID;
string name;
student *next; //增加一个结构体指针,做一个链表结构
};

int main()
{
student stuA, stuB, stuC;//定义三个对象
student *head, *p;//定义结构体指针,head是链表头-它的初始化见下面,p是临时指针-它的作用和head不同

stuA.ID = 1001;
stuA.name = "Julia";

stuB.ID = 1002;
stuB.name = "Lucy";

stuC.ID = 1003;
stuC.name = "Sophia"; //建立结构体具体对象并赋值

head = &stuA; //head的初始化
stuA.next = &stuB;
stuB.next = &stuC;
stuC.next = nullptr; //链表的头为head,链表的尾是NULL,中间三段利用指针依次相连

p = head;//p为临时指针,用来在三个对象上依次移动。这句话也是p的初始化

while (p != nullptr)
{
cout << p->ID<< " " << p->name << endl;//打印结果
p = p->next; //移动p
}

system("pause");
return EXIT_SUCCESS;
}编程收获:
链表需要在结构体定义时,定义一个指针*next;

这个*next与main()里的*head, *p不太相同。 链表里的*next是每个结点里的指针

*head是第一个结点的指针,*p是在几个不同对象上移动用的临时指针

用图表示即为:



图中暗红色的是指针,p作为临时指针可以在这四个指针位置移动

红色的为结构体对象,指针总是指向一个对象。当p移动的时候,它指向的对象变化

在这个程序里,head和每个对象的next是固定不动的,只有p指针可以移动

运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: