单向循环链表C语言实现

我们都知道,单向链表最后指向为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)
  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Engineer-Bruce_Yang

谢谢您

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值