数据结构 带头尾结点的双链表

本文详细介绍了带头尾结点的双链表,包括其头文件定义及实现函数,探讨了双链表在数据结构中的重要作用。
摘要由CSDN通过智能技术生成

带头尾结点的双链表

头文件

#ifndef DLINKED_LIST_H__
#define DLINKED_LIST_H__

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

typedef int ETYPE;
typedef struct DNode{
   
	ETYPE elem;          //结点元素 数据域
	struct DNode *prev;  //前结点位置 内存地址 
	struct DNode *next;  //后结点位置 内存地址 
}DNode;
typedef struct DLinkedList{
   
	struct DNode *head;
	struct DNode *tail;
}*DLinkedList;

#define DNODESIZE sizeof(struct DNode) 
//typedef struct DLinkedList{struct DNode *head,*tail;size_t size};//头尾结点  头尾结点都不保存数据  
//DLinkedList list = dlinked_list_create();
DLinkedList dlinked_list_create(void);

bool dlinked_list_empty(DLinkedList list);

size_t dlinked_list_size(DLinkedList list);

int dlinked_list_insert_front(DLinkedList list,size_t pos,ETYPE elem);

int dlinked_list_insert_back(DLinkedList list,size_t pos,ETYPE elem);

int dlinked_list_push_front(DLinkedList list,ETYPE elem);

int dlinked_list_push_back(DLinkedList list,ETYPE elem);

int dlinked_list_delete_front(DLinkedList list,size_t pos,ETYPE *pelem);

int dlinked_list_delete_back(DLinkedList list,size_t pos,ETYPE *pelem);

int dlinked_list_pop_front(DLinkedList list,ETYPE *pelem);

int dlinked_list_pop_back(DLinkedList list,ETYPE *pelem);

int dlinked_list_get_front(DLinkedList list,size_t pos,ETYPE *pelem);

int dlinked_list_get_back(DLinkedList list,size_t pos,ETYPE *pelem);

int dlinked_list_front(DLinkedList list,ETYPE *pelem);

int dlinked_list_back(DLinkedList list,ETYPE *pelem);

void dlinked_list_travel(DLinkedList list,bool reverse,void (*travel)(ETYPE));

void dlinked_list_clear(DLinkedList list);

void dlinked_list_destroy(DLinkedList list);

int dlinked_list_find(DLinkedList list,ETYPE key);


#endif //DLINKED_LIST_H__


实现函数

#include "dlinkedlist.h"
/*
typedef int ETYPE;
typedef struct DNode{
	ETYPE elem;          //结点元素 数据域
	struct DNode *prev;  //前结点位置 内存地址 
	struct DNode *next;  //后结点位置 内存地址 
}DNode,*DLinkedList;

//typedef struct DLinkedList{struct DNode *head,*tail;size_t size};//头尾结点  头尾结点都不保存数据  
//DLinkedList list = dlinked_list_create();
*/
DLinkedList dlinked_list_create(void){
   
	DLinkedList list = malloc(
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

HOVL_C++

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值