您的位置:首页 > 编程语言 > C语言/C++

c++环状单链表简单理解(个人见解)

2018-01-26 10:23 260 查看
临近年关,公司业务比较少,可以有自己的时间来归纳一些最近学习掌握的知识,仅便于自己目前理解。废话不多说直接上代码:

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <ctype.h>
#include <Windows.h>

struct student{

int name;
int age;
student *next;
};
int main()
{

student*st,*st1,*st2;
st = st1 = (student*)malloc(sizeof(student));
//printf("st地址为:%p\n",st);
//printf("st1地址为:%p\n",st1);
st1->age = 14;
st1->name = 19;
int m = 0;
for(;m < 4;m++)
{
st2 = (student*)malloc(sizeof(student));
st1->next = st2; //给st1的next赋予st2地址	(此时st1代表内存地址完满)

st1 = st2; 	   //st1指针解放指向st2内存

st1->age = 15+m;  //赋予st2内存地址值

st1->name = 20+m;
}
st1->next = st;

while(st1->next!=NULL)
{
printf("AGE:%d\n",st1->age);
st1 = st1->next;
Sleep(1000);
}

return 0;
}

对于指针与内存的随着自己的理解加深,目前稍微算是有些眉目了吧。分开理解指针与内存,举个例子而言指针相当于房门钥匙,内存等价于房间,就上述代码而言,将房间里存放完了姓名,年龄,下一个房门钥匙以后,当前的钥匙就可以解放出来,同时变为下一房门钥匙,利用这把钥匙打开下一个房门将里边的姓名、年龄以及下下个房门钥匙都填充完成后,这把指针钥匙就可以依次往下变换,直到你最后的一个元素填充完毕,此时连接整个链表使其变为环即可。最后一个元素添加完成,钥匙指针所指向的就是最后一个房间,只需要将最后一个房间里的钥匙变为最初房间的钥匙即可,因为我们在刚开始添加房间时备份了一把钥匙st,所以只需让st1->next
= st就完成了整个环的组建。此时获得这条环上任意一个节点即可轮询获得所有的节点元素。
 程序运行截图:

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