C语言——数据结构(循环表,双向链表)

本文详细介绍了C语言中如何实现循环表和双向链表的数据结构。循环表的定义是最后一个节点的next指向头节点,双向链表则在每个节点中包含指向前后继的指针。文章涵盖了这两种链表的基本操作,包括初始化、插入、删除、查找、判断空链表、摧毁链表、获取链表长度及显示节点等操作。
摘要由CSDN通过智能技术生成
  • 循环表
    一、定义:最后一个结点的 next 域指向头结点处
    二、结构:
    typedef struct CNode
    {
    int data;
    struct CNode *next;
    }CNode,*CList;
    在这里插入图片描述
    三、基本操作
    1>初始化单链表
void InitList(CList plist)
{
   
 assert(plist!=NULL);
 plist->next=plist;
}

2>得到一个结点

CNode *GetCNode(int val)
{
   
 CNode *cnode=(CNode *)malloc(sizeof(CNode));
 assert(cnode!=NULL);
 cnode->next=NULL;
 cnode->data=val;
 return cnode;
}

3>头插法

bool Insert_head(CList plist,int val)
{
   
 assert(plist!=NULL&&plist->next !=NULL);
 CNode *cnode=GetCNode(val);
 if(cnode!=NULL)
 {
   
 cnode->next=plist->next;
 plist->next=cnode;
 return true;
 }
 return false;
}

3>尾插法

bool Insert_tail(CList plist,int val)
{
   
 assert(plist!=NULL&&plist->next !=NULL);
 CNode *cur=plist;
 while(cur->next!=plist)
 {
   
  cur=cur->next;
 }
 CNode *cnode=GetCNode(val);
 if(cnode!=NULL)
 {
   
     cur->next=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值