http://blog.csdn.net/morixinguan/article/details/51771633

我们都知道,单向链表最后指向为NULL,也就是为空,那单向循环链表就是不指向为NULL了,指向头节点,所以下面这个程序运行结果就是,你将会看到遍历链表的时候就是一个死循环,因为它不指向为NULL,也是周而复始的执行。串成了一个环型。

[cpp] view plaincopy print?
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. typedef struct node
  4. {
  5. char name[20];
  6. struct node *link;
  7. }student;
  8. student * creat(int n)    /*建立单链表的函数,形参n为人数*/
  9. {
  10. /* *h保存表头结点的指针,*p指向当前结点的前一个结点,*s指向当前结点*/
  11. student *p,*h,*s;
  12. int i;
  13. if((h=(student *)malloc(sizeof(student)))==NULL) /*分配空间并检测*/
  14. {
  15. printf("不能分配内存空间!");
  16. exit(0);
  17. }
  18. h->name[0]='\0';     /*把表头结点的数据域置空*/
  19. h->link=NULL;        /*把表头结点的链域置空*/
  20. p=h;                /*p指向表头结点*/
  21. for(i=0;i<n;i++)
  22. {
  23. if((s= (student *) malloc(sizeof(student)))==NULL) /*分配新存储空间并检测*/
  24. {
  25. printf("不能分配内存空间!");
  26. exit(0);
  27. }
  28. p->link=s; /*把s的地址赋给p所指向的结点的链域,这样就把p和s所指向的结点连接起来了*/
  29. printf("请输入第%d个人的姓名",i+1);
  30. //指向结构体中的数据
  31. scanf("%s",s->name);
  32. s->link=NULL;
  33. p=s;
  34. }
  35. //如果是单向链表,这里为NULL,环形链表需要指向保存表头节点的指针。
  36. p->link=h;
  37. return(h);
  38. }
  39. int main(void)
  40. {
  41. int number;
  42. student *head; /*head是保存单链表头结点地址的指针*/
  43. student *p;
  44. printf("请输入相应的人数:\n");
  45. scanf("%d",&number);
  46. head=creat(number); /*把所新建的单链表头地址赋给head*/
  47. p=head;
  48. while(p->link)
  49. {
  50. printf("%s\n",p->name);
  51. p=p->link;
  52. }
  53. return 0 ;
  54. }

运行结果:

单向循环链表C语言实现相关推荐

  1. (C语言版)链表(二)——实现单向循环链表创建、插入、删除、释放内存等简单操作

    http://blog.csdn.net/fisherwan/article/details/19754585 昨天写了单向链表的代码,今天上午把单向循环链表的程序给敲完了.链表的相关操作一样的,包含 ...

  2. c语言循环链表约瑟夫问题的时间复杂度,用单向循环链表解决约瑟夫问题算法优劣性分析.doc...

    用单向循环链表解决约瑟夫问题算法优劣性分析 用单向循环链表解决约瑟夫问题算法优劣性分析 摘要: 首先由简单问题引入约瑟夫问题,然后用单向循环链表解决约瑟夫问题,最后对模拟方法及数学方法的优劣性进行分析 ...

  3. C语言实现单向循环链表

    #include<stdio.h> #include<stdlib.h> // 单向循环链表typedef int datatype_t; typedef struct nod ...

  4. 《恋上数据结构第1季》单向循环链表、双向循环链表以及约瑟夫环问题

    循环链表(CircleList) 链表的接口设计 单向循环链表 单向循环链表完整源码 双向循环链表 双向循环链表完整源码 双向循环链表解决约瑟夫环问题 如何发挥循环链表的最大威力? 静态链表 数据结构 ...

  5. 单向循环链表的简单实现

    单向循环链表:       在单向链表中,头指针是相当重要的,因为单向链表的操作都需要头指针,所以如果头指针丢失或者破坏,那么整个链表都会遗失,并且浪费链表内存空间. 单向循环链表的构成:       ...

  6. Java 单向链表和单向循环链表的代码实现

    这个链表,以前上学的时候,学c语言,还是数据结构的时候,学过.也许也实现过吧.下面我就简单记录下这个链表的实现. 单向链表跟单向循环链表的差别就是:单向链表是有结束位的,指向null的时候,就到结尾了 ...

  7. node 获取表单数据 为空_数据结构与算法(python)单向循环链表

    单向循环链表 单链表的一个变形是单向循环链表, 链表的最后一个节点的next域不再为None, 而是指向链表的头节点. 单向循环链表如图所示: 单向循环链表 同样单向循环链表也是要使用python来对 ...

  8. python之链表、单链表、双向链表、单向循环链表

    python之链表.单链表.双向链表.单向循环链表 链表 顺序表的构建需要预先知道数据大小来申请连续的存储空间,而在进行扩充时,又需要进行数据的搬迁,所以使用起来并非很灵活 链表结构可以充分利用计算机 ...

  9. 线性表—单向循环链表

    开始没看单向循环链表,感觉应该很简单,但实际上有几个概念不是很清楚: 头结点,头指针,尾指针,尾节点??? [个人理解]:头结点就是一个链表中实际存储数据的那个节点的前一个节点,这个节点不存储数据,只 ...

最新文章

  1. .NET Garbage-Collectors
  2. 今年端午节,想回家看看父母...
  3. 【错误记录】Visual Studio 编译 C++ 代码报错 ( To disable deprecation, use _CRT_SECURE_NO_WARNINGS. )
  4. qt调用mysql加密接口_Qt实现客户端/服务器端登录验证|数据传输使用md5加密 | 学步园...
  5. html页面渲染vue组件,Vue组件页面渲染的基本流程
  6. 女程序员被阿里录取工资二万六,辞职时被领导挽留:给你四万留下
  7. 再次聊聊游戏测试中的bug:bug层级划分与分析
  8. php项目安装器,php服务器环境安装及项目搭建
  9. tea 加密密钥生成_加密密钥生成需要的是熵的良好来源
  10. 甭给《程序员》把脉——你不是主编
  11. SQL Server远程连接操作
  12. vector容器中是否应该放指针?解决方法
  13. 思科多个交换机不同VLAN的配置
  14. 正弦定理和余弦定理_高中数学,正弦定理和余弦定理的应用举例,含高频考点及详细解析...
  15. 麒麟V10SP1的国产化Qt适配
  16. 华为nova8pro鸿蒙系统怎么看,华为nova8的隐藏功能_华为nova8隐藏功能怎么开启
  17. 在Fedora 14下安装yong输入法
  18. opencv+对图片实现聚光灯效果
  19. linux 摄像头 音频,调用宇视摄像机SDK获取IPC的音视频码流
  20. 记录一次redis漏洞攻击

热门文章

  1. MariaDB配置、集群
  2. Python—day3
  3. phpstorm9 增加对.vue的支持
  4. 安卓TCP通信版本2
  5. Perl语言编程学习笔记2
  6. es springboot 不设置id_springboot整合ES_文档ID删除
  7. puppet 安装mysql_Puppet安装dashboard
  8. vcpkg安装_微软牌包管理器vcpkg更新及路线图计划
  9. 行号 设置vim_在VSCode里面配置Vim正确姿势(细节解析)
  10. java构造函数_JAVA的构造函数是怎么写的。万分感谢。路过的请不要嘲笑%_%