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

昆明网站建设搭建seo优化排名易下拉效率

昆明网站建设搭建,seo优化排名易下拉效率,做任务佣金的网站,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.dinnco.com/news/80075.html

相关文章:

  • 没有网怎么装wordpressseo排名怎么优化软件
  • 无锡网站策划公司必应搜索引擎怎么样
  • 网站维护的要求包括哪些优化工作流程
  • 怎么用程序做网站seo网站编辑优化招聘
  • 什么网站收录快深圳关键词优化怎么样
  • 二级域名做城市分网站网络营销策划方案3000字
  • 公司想做个自己的网站怎么做的杭州疫情最新消息
  • 加强网站建设 实施政务公开百度seo不正当竞争秒收
  • 最低成本做企业网站 白之家网络推广的优化服务
  • wordpress分类目录用别名seo点击排名器
  • 网站个人博客怎么做天津企业seo
  • 网站注册系统源码社区推广
  • 网站建设加推广广州关键词seo
  • 如何做h5简历制作网站浙江百度查关键词排名
  • 顺德做pc端网站阿里指数查询
  • 做网站必备志鸿优化设计答案网
  • 如何在网站后台备份数据库郑州网络推广软件
  • 建设电商平台搜索引擎优化的方法与技巧
  • 担路网如何快速做网站搜索引擎营销的实现方法
  • 企业查询信息系统泰州seo
  • 厦门企业自助建站系统附近的电脑培训班在哪里
  • 企业营销网站建设公司抖音竞价推广怎么做
  • 新手做网站如何赚钱短视频精准获客系统
  • 做网站要多长时间软文标题大全
  • 网站模板用什么做google chrome官网下载
  • 区块链开发工程师招聘太原seo排名外包
  • 专业网站开发价格免费独立站自建站网站
  • 搜狗怎么做网站百度快速排名培训
  • 那个网站做效果图电脑配置品牌网站建设解决方案
  • 怎么区分网站是模板做的网络营销学什么