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

我想做个网站怎么做东莞建外贸网站

我想做个网站怎么做,东莞建外贸网站,做毕业设计网站的步骤,做一个网站建设目录 一、双向带头循环链表概述 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.yayakq.cn/news/816051/

相关文章:

  • 网站服务器怎么收费培训平台网站
  • 网站建设公司的政策风险眉山专业网吧设计公司
  • 网站开发概要设计网站建设 计划书
  • pc网站和手机网站成都交易网站建设
  • 吴江建设局网站打不开看设计案例的有哪些网站
  • 淄博亿泰网站建设推广南昌网站建设风格
  • php的网站怎么做的手游开发公司手游报价
  • 做内容网站赚钱吗佛山网站设计步骤
  • 泉州那家做网站公司好凡科轻站小程序制作平台
  • 公司网站最新版高安高端网站设计公司
  • 海外兼职网站建设高端品牌服装有哪些
  • 做淘宝链接网站宣传片拍摄计划
  • 做外贸需要网站吗制作公司的网站
  • 南昌住房建设局网站有什么图片做视频的网站吗
  • 重庆南川网站制作公司电话工业设计的概念是什么
  • 网站建设公司盈利模式设备高端网站建设
  • 上海市做网站福州如何做百度的网站
  • 正能量网站地址污的程序外包公司
  • 洛阳酒店网站开发大全郑州做网站优化的公司
  • 芜湖市建设工程网站维护公告电视直播网站建设
  • 学生网站做兼职wordpress 首页顶部为空
  • 如何设计网站的首页门户网站建设和运行保证的磋商文件
  • 陕西省建设执业中心网站网页游戏梦幻西游
  • 什么是网站源码天津智能网站建设方案
  • 中国互联网协会官方网站百度全网营销
  • 网站后台模板htmldjango网站开发实例pdf
  • 做任务赚佣金网站有哪些电子邮箱怎么填写
  • 公司商城网站建设方案机械加工网上找订单
  • 大型网站建设兴田德润简介天河建设网站外包
  • html5网站开发费用装修门面一般找谁