c语言实现双链表

关于双链表的一些简单功能的实现

区别于单链表的无非就是添加节点 删除节点 稍微麻烦一点。

需要注意的则是: 添加节点的时候, 先处理待添加节点的前驱和后继  , 再处理前一个节点的后继 和 后一个节点的前驱

      删除节点的时候, 注意删除首节点时, 下一个节点的前驱为NULL   删除后继时,前一个节点的后继为NULL


双链表的简单功能

/*双链表的实现*/

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

typedef struct Dblink
{
    int data;              //数据域
    struct Dblink *prv;      //指向前驱节点
    struct Dblink *next;     //指向后继节点
}Node;

int Empty(Node *head);                      //判空
void Print(Node *head);                     //打印
void TransPrint(Node *head);                //反向打印
void CreateNode(Node **p, int data);        //创建节点
void Add(Node **head, int data);            //向链表尾部添加节点
Node *FindPosNode(Node *head, int pos);     //根据位置找节点, 没有返回NULL
Node *FindDataNode(Node *head, int data);   //根据data找第一个节点, 没有返回NULL
void Insert(Node **head, int data);         //某个节点前插入(包括头插)
int GetToatalNode(Node *head);              //获取节点总数
void DeleteNode(Node **head, int data);     //删除内容为data的节点
void FreeAll(Node **head);                  //销毁链表



函数实现部分


                
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值