单向循环链表C语言实现
http://blog.csdn.net/morixinguan/article/details/51771633
我们都知道,单向链表最后指向为NULL,也就是为空,那单向循环链表就是不指向为NULL了,指向头节点,所以下面这个程序运行结果就是,你将会看到遍历链表的时候就是一个死循环,因为它不指向为NULL,也是周而复始的执行。串成了一个环型。
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct node
- {
- char name[20];
- struct node *link;
- }student;
- student * creat(int n) /*建立单链表的函数,形参n为人数*/
- {
- /* *h保存表头结点的指针,*p指向当前结点的前一个结点,*s指向当前结点*/
- student *p,*h,*s;
- int i;
- if((h=(student *)malloc(sizeof(student)))==NULL) /*分配空间并检测*/
- {
- printf("不能分配内存空间!");
- exit(0);
- }
- h->name[0]='\0'; /*把表头结点的数据域置空*/
- h->link=NULL; /*把表头结点的链域置空*/
- p=h; /*p指向表头结点*/
- for(i=0;i<n;i++)
- {
- if((s= (student *) malloc(sizeof(student)))==NULL) /*分配新存储空间并检测*/
- {
- printf("不能分配内存空间!");
- exit(0);
- }
- p->link=s; /*把s的地址赋给p所指向的结点的链域,这样就把p和s所指向的结点连接起来了*/
- printf("请输入第%d个人的姓名",i+1);
- //指向结构体中的数据
- scanf("%s",s->name);
- s->link=NULL;
- p=s;
- }
- //如果是单向链表,这里为NULL,环形链表需要指向保存表头节点的指针。
- p->link=h;
- return(h);
- }
- int main(void)
- {
- int number;
- student *head; /*head是保存单链表头结点地址的指针*/
- student *p;
- printf("请输入相应的人数:\n");
- scanf("%d",&number);
- head=creat(number); /*把所新建的单链表头地址赋给head*/
- p=head;
- while(p->link)
- {
- printf("%s\n",p->name);
- p=p->link;
- }
- return 0 ;
- }
运行结果:
单向循环链表C语言实现相关推荐
- (C语言版)链表(二)——实现单向循环链表创建、插入、删除、释放内存等简单操作
http://blog.csdn.net/fisherwan/article/details/19754585 昨天写了单向链表的代码,今天上午把单向循环链表的程序给敲完了.链表的相关操作一样的,包含 ...
- c语言循环链表约瑟夫问题的时间复杂度,用单向循环链表解决约瑟夫问题算法优劣性分析.doc...
用单向循环链表解决约瑟夫问题算法优劣性分析 用单向循环链表解决约瑟夫问题算法优劣性分析 摘要: 首先由简单问题引入约瑟夫问题,然后用单向循环链表解决约瑟夫问题,最后对模拟方法及数学方法的优劣性进行分析 ...
- C语言实现单向循环链表
#include<stdio.h> #include<stdlib.h> // 单向循环链表typedef int datatype_t; typedef struct nod ...
- 《恋上数据结构第1季》单向循环链表、双向循环链表以及约瑟夫环问题
循环链表(CircleList) 链表的接口设计 单向循环链表 单向循环链表完整源码 双向循环链表 双向循环链表完整源码 双向循环链表解决约瑟夫环问题 如何发挥循环链表的最大威力? 静态链表 数据结构 ...
- 单向循环链表的简单实现
单向循环链表: 在单向链表中,头指针是相当重要的,因为单向链表的操作都需要头指针,所以如果头指针丢失或者破坏,那么整个链表都会遗失,并且浪费链表内存空间. 单向循环链表的构成: ...
- Java 单向链表和单向循环链表的代码实现
这个链表,以前上学的时候,学c语言,还是数据结构的时候,学过.也许也实现过吧.下面我就简单记录下这个链表的实现. 单向链表跟单向循环链表的差别就是:单向链表是有结束位的,指向null的时候,就到结尾了 ...
- node 获取表单数据 为空_数据结构与算法(python)单向循环链表
单向循环链表 单链表的一个变形是单向循环链表, 链表的最后一个节点的next域不再为None, 而是指向链表的头节点. 单向循环链表如图所示: 单向循环链表 同样单向循环链表也是要使用python来对 ...
- python之链表、单链表、双向链表、单向循环链表
python之链表.单链表.双向链表.单向循环链表 链表 顺序表的构建需要预先知道数据大小来申请连续的存储空间,而在进行扩充时,又需要进行数据的搬迁,所以使用起来并非很灵活 链表结构可以充分利用计算机 ...
- 线性表—单向循环链表
开始没看单向循环链表,感觉应该很简单,但实际上有几个概念不是很清楚: 头结点,头指针,尾指针,尾节点??? [个人理解]:头结点就是一个链表中实际存储数据的那个节点的前一个节点,这个节点不存储数据,只 ...
最新文章
- .NET Garbage-Collectors
- 今年端午节,想回家看看父母...
- 【错误记录】Visual Studio 编译 C++ 代码报错 ( To disable deprecation, use _CRT_SECURE_NO_WARNINGS. )
- qt调用mysql加密接口_Qt实现客户端/服务器端登录验证|数据传输使用md5加密 | 学步园...
- html页面渲染vue组件,Vue组件页面渲染的基本流程
- 女程序员被阿里录取工资二万六,辞职时被领导挽留:给你四万留下
- 再次聊聊游戏测试中的bug:bug层级划分与分析
- php项目安装器,php服务器环境安装及项目搭建
- tea 加密密钥生成_加密密钥生成需要的是熵的良好来源
- 甭给《程序员》把脉——你不是主编
- SQL Server远程连接操作
- vector容器中是否应该放指针?解决方法
- 思科多个交换机不同VLAN的配置
- 正弦定理和余弦定理_高中数学,正弦定理和余弦定理的应用举例,含高频考点及详细解析...
- 麒麟V10SP1的国产化Qt适配
- 华为nova8pro鸿蒙系统怎么看,华为nova8的隐藏功能_华为nova8隐藏功能怎么开启
- 在Fedora 14下安装yong输入法
- opencv+对图片实现聚光灯效果
- linux 摄像头 音频,调用宇视摄像机SDK获取IPC的音视频码流
- 记录一次redis漏洞攻击
热门文章
- MariaDB配置、集群
- Python—day3
- phpstorm9 增加对.vue的支持
- 安卓TCP通信版本2
- Perl语言编程学习笔记2
- es springboot 不设置id_springboot整合ES_文档ID删除
- puppet 安装mysql_Puppet安装dashboard
- vcpkg安装_微软牌包管理器vcpkg更新及路线图计划
- 行号 设置vim_在VSCode里面配置Vim正确姿势(细节解析)
- java构造函数_JAVA的构造函数是怎么写的。万分感谢。路过的请不要嘲笑%_%