您的位置:首页 > 娱乐 > 明星 > 数据结构(四)双向链表

数据结构(四)双向链表

2024/12/27 11:39:28 来源:https://blog.csdn.net/weixin_44254079/article/details/139219069  浏览:    关键词:数据结构(四)双向链表

文章目录

  • 一、概念
  • 二、无头双向链表示意图
  • 三、操作
    • (一)定义结构体
    • (二)创建链表
      • 1. 函数定义
      • 2. 注意点
      • 3. 代码实现
    • (三)插入
      • 1. 函数定义
      • 2. 注意点
      • 3. 代码实现
    • (四)删除
      • 1. 函数定义
      • 2. 注意点
      • 3. 代码实现
    • (五)修改
      • 1. 函数定义
      • 2. 注意点
      • 3. 代码实现
    • (六)查询
      • 1. 函数定义
      • 2. 注意点
      • 3. 代码实现
    • (七)打印
      • 1. 函数定义
      • 2. 注意点
      • 3. 代码实现

一、概念

每个节点有一个数据域存放数据,一个前指针域指向前一节点,一个后指针域指向后一节点

优点是可以较低难度找到前一节点,缺点是占用内存空间较大

二、无头双向链表示意图

在这里插入图片描述

三、操作

(一)定义结构体

typedef struct twolist
{struct twolist *prv;int data; //以int型数据举例,可以放结构体成员struct twostack *next;
}ls_t;

(二)创建链表

1. 函数定义

int create_list(ls_t **my_list,int num);

创建第一个数据节点
初始化数据节点

2. 注意点

  1. 入参合理性检查
  2. 第一个数据节点的前指针和后指针均初始化为NULL

3. 代码实现

int create_list(ls_t **my_list,int num){if(NULL==my_list) return -1;*my_list=(ls_t *)malloc(sizeof(ls_t));if(NULL==*my_list) return -1;//初始化(*my_list)->prv=NULL;(*my_list)->next=NULL;(*my_list)->data=num;return 0;
}

(三)插入

在这里插入图片描述

1. 函数定义

2. 注意点

3. 代码实现


(四)删除

在这里插入图片描述

1. 函数定义

2. 注意点

3. 代码实现


(五)修改

1. 函数定义

2. 注意点

3. 代码实现


(六)查询

1. 函数定义

2. 注意点

3. 代码实现


(七)打印

1. 函数定义

int print_list(ls_t *my_list);

2. 注意点

  1. 入参合理性检查

3. 代码实现

int print_list(ls_t *my_list){if(NULL==my_list) return -1;//打印除了最后一个元素的所有元素ls_t *ptemp=my_list;while(NULL!=ptemp->next){printf("%d ",ptemp->data);ptemp=ptemp->next;}//打印最后一个元素printf("%d ",ptemp->data);putchar(10);return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com