c++环状单链表简单理解(个人见解)
2018-01-26 10:23
260 查看
临近年关,公司业务比较少,可以有自己的时间来归纳一些最近学习掌握的知识,仅便于自己目前理解。废话不多说直接上代码:
对于指针与内存的随着自己的理解加深,目前稍微算是有些眉目了吧。分开理解指针与内存,举个例子而言指针相当于房门钥匙,内存等价于房间,就上述代码而言,将房间里存放完了姓名,年龄,下一个房门钥匙以后,当前的钥匙就可以解放出来,同时变为下一房门钥匙,利用这把钥匙打开下一个房门将里边的姓名、年龄以及下下个房门钥匙都填充完成后,这把指针钥匙就可以依次往下变换,直到你最后的一个元素填充完毕,此时连接整个链表使其变为环即可。最后一个元素添加完成,钥匙指针所指向的就是最后一个房间,只需要将最后一个房间里的钥匙变为最初房间的钥匙即可,因为我们在刚开始添加房间时备份了一把钥匙st,所以只需让st1->next
= st就完成了整个环的组建。此时获得这条环上任意一个节点即可轮询获得所有的节点元素。
程序运行截图:
#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就完成了整个环的组建。此时获得这条环上任意一个节点即可轮询获得所有的节点元素。
程序运行截图:
相关文章推荐
- dodo:人脸识别方法个人见解(包括稀疏表示方法的理解)
- C++:this指针的简单理解
- 个人对于堆栈的理解(简单通俗)
- 个人对hashCode与equals的区别与联系简单理解
- 单链表c++简单模板实现
- 【C语言 C++】简单keywordRegister,Const,Static,Volatile,typedef,Define的理解
- 个人理解单链表翻转
- 个人对于OC中delegate、block的简单理解
- 接口、抽象类、普通类的简单的个人理解
- 关于DataRow和DataColumn的一点个人简单理解
- linux c++ select/poll/epoll 的个人见解
- scanf函数中%s和%c的简单区别——个人见解
- C++ 引用的简单理解
- Recyclerview的一些个人理解与使用(一)adapter的简单封装
- c++指针的个人理解
- 单链表c++简单模板实现
- 简单谈谈对C++设计模式的理解
- C++ Primer Plus 16.3 标准模板库 简单例子与STL理解
- C++中别名的简单理解
- c++关于封装、接口的简单理解