循环单链表(算法与数据结构)

 循环单链表的表现:

struct Node; //结点类型
typedef struct Node * PNode; //结点指针类型
struct Node
{ DataType info;  //数据域
  PNode link;    //指针域
};
typedef  struct Node * LinkList; //结点指针类型
LinkList  clist; //clist: 尾指针

 循环单链表上的操作:
1.创建空表
①声明指向链表的(头或尾)指针
②为头结点申请空间
③设置头结点的指针域

LinkList createNullcList_link(void)
{ LinkList clist;  //声明链表(尾)指针
  clist = (LinkList )malloc(sizeof(struct Node));
  if(clist != NULL) //若空间申请成功 
     clist->link = clist; 
  else    printf(“out of space!\n”);  
  return clist; //返回链表指针
 }

2.判断循环单链表是否为空

  int isNullcList_link(LinkList clist)
  {   
      return (clist->link == clist);
  }

3.在空表中插入结点
①在(带头结点的)空表中插入结点:

//建空表的一系列操作
PNode p; //建立新结点
p = (PNode)malloc(sizeof(struct Node));
p->info = x; 
p->link = clist->link;  //新结点加入链表
clist->link = p; //连成环
clist =p; //设置尾指针

②在(无头结点)空表中插入结点

LinkList  clist; //声明尾指针
PNode p; //建立新结点
p = (PNode)malloc(sizeof(struct Node))
p->info = x; 
clist = p;  //新结点加入链表
clist->link = clist; //设置循环
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值