带头结点的双向循环链表操作集 (25 分)

该博客介绍了如何实现一个带头结点的双向循环链表,包括创建、插入、检查是否为空、遍历、查找、删除、移除指定元素、清空及销毁链表等操作。提供了详细的函数接口定义,并给出了裁判测试程序样例,展示了如何使用这些操作。
摘要由CSDN通过智能技术生成

本题要求实现一个带头结点的双向循环链表操作集。

函数接口定义:

typedef int dataType;

typedef struct _node
{
    dataType data;
    struct _node *prev;//指向前驱的指针
    struct _node *next;//指向后继的指针
}node;

typedef node* List;

List create_list();//创建一个空的循环链表,返回指向头节点的指针。
void insert(List L, dataType x);//用尾插法向链表L中插入数据域等于x的结点
bool is_empty(List L);//如果链表为空,则返回true,否则返回false。
void traverse(List L);//顺序遍历链表L。输出所有结点的数据域。如果链表为空则输出NULL
void traverse_back(List L);//逆序遍历链表L。输出所有结点的数据域。如果链表为空则输出NULL
node* search(List L, dataType x);//返回第1个指向数据域等于x的结点的指针。如果没有则返回NULL。
void delete_node(List L, node* p);//删除指针p指向的结点。调用者保证p是合法的。
void remove_node(List L, dataType x);//删除链表L中所有数据域等于x的结点
void make_empty(List L);//使链表L成为一个空链表
void destroy_list(List L);//销毁链表L

裁判测试程序样例:

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

typedef int dataType;

typedef struct _node
{
    dataType d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值