c语言双链表elemtype,双链表 C语言实现

本文档提供了一个C语言实现的双链表,包括初始化、插入、删除、显示、排序等操作。通过DList.h和DList.cpp文件详细阐述了双链表的各种方法,如头插、尾插、查找、修改、删除等,并提供了测试用例进行验证。
摘要由CSDN通过智能技术生成

/*

作用:双链表及其各种方法的实现(C语言)

日期:2015年5月

*/

//DList.h

//结构体定义及函数声明

#ifndef DLIST_H

#define DLIST_H

#include

#include

using namespace std;

#define ElemType int

typedef struct Node

{

ElemType data;

struct Node *prio;

struct Node *next;

}Node,*PNode;

typedef struct List

{

PNode head;

PNode tail;

int size;

}List,*PList;

void InitList(PList list); //初始链表

void push_back(PList list,ElemType x); //尾插

void push_front(PList list,ElemType x); //头插

void show_DList(PList list); //显示链表

void pop_back(PList list); //删除最后面一个节点

void pop_front(PList list); //删除最前面一个节点

void insert_val(PList list,ElemType x); //链表有序的前提下,插入一个节点到适当位置

PNode find(PList list,ElemType key); //给一个值,看这个节点是否找到或存在

void delete_val(PList list,ElemType key); //删除给定的值

void modify(PList list,ElemType key1,ElemType key2); //把原有的key1修改成key2

void clear(PList list); //清空链表

void destroy(PList list); //摧毁链表

void sort(PList list); //把无序的链表排成有序

void reserve(PList list); //把链表转置

int length(PList list); //求链表的长度

ElemType next(PList list,ElemType x); // 求给定值的后继值

ElemType prio(PList list,ElemType x); // 求给定值的前驱值

#endif

//DList.cpp

//各种函数的实现方法

#include"DList.h"

void InitList(PList list)

{

Node *s = (Node *)malloc(sizeof(Node));

assert(s != NULL);

s->prio = NULL;

s->next = NULL;

list->head = list->tail = s;

list->size = 0;

}

void push_back(PList list,ElemType x)

{

PNode s = (PNode)malloc(sizeof(Node));

assert(NULL != s);

s->data = x;

s->next = NULL;

list->tail->next = s;

s->prio = list->tail;

list->tail = s;

list->size++;

}

void push_front(PLi

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值