当前位置: 首页 > news >正文

昆明网站建设搭建手机app开发

昆明网站建设搭建,手机app开发,hoteliour wordpress,网站建设流程图目录 一、双向带头循环链表概述 1.什么是双向带头循环链表 2.双向带头循环链表的优势 3.双向带头循环链表简图 二、双向带头循环链表的增删查改图解及代码实现 1.双向带头循环链表的头插 2.双向带头循环链表的尾插 3.双向带头循环链表的头删 4.双向带头循环链表的尾删…

目录

一、双向带头循环链表概述

1.什么是双向带头循环链表

2.双向带头循环链表的优势

3.双向带头循环链表简图

二、双向带头循环链表的增删查改图解及代码实现

1.双向带头循环链表的头插

2.双向带头循环链表的尾插

3.双向带头循环链表的头删

4.双向带头循环链表的尾删

5.双向带头循环链表在pos位置前插入节点

6.双向带头循环链表删除pos位置节点


一、双向带头循环链表概述

1.什么是双向带头循环链表

        双向:每个节点都带有一个指向下一个节点的指针(next)和一个直向前一个节点的指针(prev);

        带头:即链表带有哨兵位头节点,该节点只包含两个指针,不存储有效数据;

        循环:哨兵位头节点有一个next指针指向第一个有效数据节点,还有一个prev指针指向哨兵位节点的前一个节点即链表的尾节点,因此实现了链表的循环;

        双向带头循环链表的节点类型:

typedef int LTDataType;
typedef struct ListNode
{LTDataType data;struct ListNode* next;struct ListNode* prev;
}ListNode;

2.双向带头循环链表的优势

        双向带头循环链表不需要我们遍历每个节点来找尾节点,对于链表的尾插而言就变得非常简单。由于较单向非循环链表而言,双向带头循环链表多了一个指向前一个节点的指针prev,所以在结构上较为复杂,但实际应用中少了很多的麻烦。

3.双向带头循环链表简图

 

二、双向带头循环链表的增删查改图解及代码实现

1.双向带头循环链表的头插

示意图:

代码实现:

// 双向链表头插
void ListPushFront(ListNode* pHead, LTDataType x)
{assert(pHead);ListNode* NewNode = Node_New(x);ListNode* First = pHead->next;NewNode->next = First;First->prev = NewNode;NewNode->prev = pHead;pHead->next = NewNode;
}

2.双向带头循环链表的尾插

示意图:

代码实现:

// 双向链表尾插
void ListPushBack(ListNode* pHead, LTDataType x)
{assert(pHead);ListNode* NewNode = Node_New(x);ListNode* Tail = pHead->prev;NewNode->prev = Tail;Tail->next = NewNode;NewNode->next = pHead;pHead->prev = NewNode;
}

3.双向带头循环链表的头删

示意图:

代码实现:

// 双向链表头删
void ListPopFront(ListNode* pHead)
{assert(pHead);if (pHead->next == pHead){return;}ListNode* First = pHead->next;ListNode* Next = First->next;pHead->next = Next;Next->prev = pHead;free(First);First = NULL;
}

4.双向带头循环链表的尾删

示意图:

代码实现:

// 双向链表尾删
void ListPopBack(ListNode* pHead)
{assert(pHead);if (pHead->next == pHead){return;}ListNode* Tail = pHead->prev;ListNode* Prev = Tail->prev;Prev->next = pHead;pHead->prev = Prev;free(Tail);Tail = NULL;
}

5.双向带头循环链表在pos位置前插入节点

示意图:

代码实现:

// 双向链表在pos位置的前面插入节点
void ListInsert(ListNode* pos, LTDataType x)
{ListNode* NewNode = Node_New(x);ListNode* Prev = pos->prev;Prev->next = NewNode;NewNode->prev = Prev;NewNode->next = pos;pos->prev = NewNode;
}

6.双向带头循环链表删除pos位置节点

示意图:

代码实现:

// 双向链表删除pos位置的节点
void ListErase(ListNode* pos)
{ListNode* Prev = pos->prev;ListNode* Hind = pos->next;Prev->next = Hind;Hind->prev = Prev;free(pos);pos = NULL;
}

http://www.yidumall.com/news/89987.html

相关文章:

  • 自己做网站需要啥管理系统
  • 济宁市建设银行网站百度seo规则
  • 铜陵电子商务网站建设无需下载直接进入的网站的代码
  • 微信开发者工具的介绍广州百度推广优化
  • 峨眉网站建设代运营电商公司
  • 江西网站开发联系方式seo网站有优化培训吗
  • 网站备案个人信息泄露创量广告投放平台
  • 做网站的公司主要做shm重庆seo网站收录优化
  • 做纸棋的网站seo网站排名优化软件
  • 自己公司内网网站和外网怎么做同步谷歌seo网站运营
  • 广州我网站制作百度推广一个点击多少钱
  • 做新闻网站用香港阿里云服务器短视频营销成功的案例
  • 备案的域名拿来做别的网站企业中层管理人员培训课程
  • 做外贸如何选择网站推广神器
  • 网站建设公司转型各国足球世界排名
  • 服务器部署wordpress免费seo关键词优化服务
  • 常州网站制作哪家好怎么建网站免费的
  • 做网站的学什么代码b2b平台营销
  • 服务器哪些端口可以做网站seo外包公司是啥
  • 长春市城乡建设局网站深圳推广平台深圳网络推广
  • 供应链公司是什么行业西安seo按天收费
  • 网站建设合同 域名网站设计制作在哪里找
  • phpcms做网站感想百度权重5的网站能卖多少钱
  • 外贸做零售的网站微信推广引流方法
  • 罗湖网站建设公司阿里云域名注册官网网址
  • WordPress图片变模糊化工网站关键词优化
  • 哪个网站做课件能赚钱自媒体是什么
  • 搜索引擎搜不到网站专业软文代写
  • 用dw制作网站模板视频推广一条多少钱
  • python做项目的网站百度商业账号登录