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

网站设计建设,网络营销推广请人做网站花多少钱

网站设计建设,网络营销推广,请人做网站花多少钱,wordpress 标签小工具,外销网站建设目录一.链表的分类二.与单链表相比三.实现增删查改1.双向循环链表结构的创建2.创建新节点3.初始化链表4.头插和尾插5.判断链表是否为空6.头删和尾删7.打印函数8.查找函数9.删除pos位置节点10.在pos前位置插入数据11.优化升级一.链表的分类 链表可有根据单向双向、有无哨兵位、…

目录

  • 一.链表的分类
    • 二.与单链表相比
      • 三.实现增删查改
        • 1.双向循环链表结构的创建
        • 2.创建新节点
        • 3.初始化链表
        • 4.头插和尾插
        • 5.判断链表是否为空
        • 6.头删和尾删
        • 7.打印函数
        • 8.查找函数
        • 9.删除pos位置节点
        • 10.在pos前位置插入数据
        • 11.优化升级

一.链表的分类

链表可有根据单向双向有无哨兵位是否循环分为八种类型,只要我们学习最简单的无头单向非循环链表以及最复杂的双向循环链表,其他的类型也就可以很好地解决了。

二.与单链表相比

与单链表相比较,单链表结构简单,一般不会单独用来存储数据,一般作为其他数据结构的子结构来使用。而双向循环链表结构复杂,但功能丰富使用便捷

三.实现增删查改

1.双向循环链表结构的创建

双向链表与之前我们剖析的单链表不同,单链表只能通过next指针向后访问导致单链表的局限性大,而双向链表不仅可以向后访问还可以向前访问。所以在创建双向链表时就需要多一个指针:

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

2.创建新节点

在初始化和后续进行插入操作时,我们都需要创建出一个新节点进行使用,所以我们编写分装创建新节点的函数:

LTNode* CreateList(LTDataType x)
{LTNode* newnode = (LTNode*)malloc(sizeof(LTNode));if (newnode == NULL){perror("newnode malloc");return NULL;}newnode->next = NULL;newnode->data = x;newnode->prev = NULL;return newnode;
}

3.初始化链表

因为是双向循环的链表所以哨兵位的头节点的nextprev指针都指向自己:

LTNode* LTInit()
{LTNode* phead = CreateList(-1);phead->next = phead;phead->prev = phead;return phead;}

4.头插和尾插

在双向循环的结构便利下,相较于单链表,找尾的操作会非常简单,只需要访问哨兵位的上一个节点即可。

void PushFront(LTNode* head, LTDataType x)
{assert(head);LTNode* newnode = CreateList(x);LTNode* tail=head->next;newnode->next = head->next;newnode->prev = head;tail->prev = newnode;head->next = newnode;}
void PushBack(LTNode* head, LTDataType x)
{assert(head);LTNode* newnode = CreateList(x);LTNode* tail = head->prev;tail->next = newnode;newnode->prev = tail;newnode->next = head;head->prev = newnode;
}

5.判断链表是否为空

我们在进行删除操作前,应判断此时链表是否为空,如果已经为空则不能进行删除操作。

bool Empty(LTNode* head)
{assert(head);return head->next == head;
}

6.头删和尾删

void PopFront(LTNode* head)
{assert(head);assert(!Empty(head));LTNode* tail = head->next;head->next = head->next->next;free(tail);tail = NULL;}void PophBack(LTNode* head)
{assert(head);assert(!(Empty(head)));LTNode* tail = head->prev;LTNode* tailprev = tail->prev;tailprev->next = head;head->prev = tailprev;free(tail);tail = NULL;
}

7.打印函数

在编写链表的插入删除功能时,我们常需要对代码进行测试,所以编写打印函数:

void LTPrin(LTNode* phead)
{assert(phead);printf("<=head=>");LTNode* cur = phead->next;while (cur != phead){printf("%d<=>", cur->data);cur = cur->next;}printf("\n");
}

8.查找函数

LTNode* ListFind(LTNode* head, LTDataType x)
{assert(head);LTNode* cur = head;while (cur->data != x){cur = cur->next;}return cur;}

9.删除pos位置节点

void ListErase(LTNode* pos)
{assert(pos);LTNode* tail = pos;pos->next->prev = pos->prev;pos->prev->next = pos->next;free(tail);tail = NULL;
}

10.在pos前位置插入数据

void ListInsert(LTNode* pos, LTDataType x)
{assert(pos);LTNode* prev = pos->prev;LTNode* newnode = CreateList(x);newnode->next = pos;newnode->prev = prev;pos->prev = newnode;prev->next = newnode;
}

11.优化升级

在我们编写完pos位置插入和删除后,其实对上文的头删尾删头插尾插,都可以使用这两个函数来完成:

void PushBack(LTNode* head, LTDataType x)
{assert(head);ListInsert(head, x);
}void PushFront(LTNode* head, LTDataType x)
{assert(head);ListInsert(head->next, x);
}void PopFront(LTNode* head)
{assert(head);assert(!Empty(head));ListErase(head->next);
}void PophBack(LTNode* head)
{assert(head);assert(!(Empty(head)));ListErase(head->prev);
}
http://www.yayakq.cn/news/452884/

相关文章:

  • 网站建设自学 优帮云wordpress按钮下拉菜单
  • 云南购物网站建设番禺网站建设企业
  • 宁波网站营销推广制作比较流行的sns营销网站
  • 网站备案流程教程wordpress 安装要求
  • 安徽省建设工程网站wordpress翻译软件
  • 宣城网站制作张雪峰对市场营销专业的建议
  • 建设网站公司专业服务广陵区建设局网站
  • 陕西省高速集团建设网站中石化石油工程建设公司网站
  • 跨越速运在黑龙江黑河网点苏州网站快速排名优化
  • 网站模板建设达州市建设局网站
  • 网站备案密码找回石家庄核酸机构造假视频
  • 杭州蒙特网站建设杭州专业网站建设公司
  • 网站建设收费情况wordpress过滤器插件6
  • 大型的营销型网站网站建设公司哪个好
  • 重庆网站外包服务器租用网站自动划分空间
  • php网站游客试用怎么做哪里可以学seo课程
  • 重庆忠县网站建设公司网页制作协议
  • 简单的企业网站模板无锡网站制作电话
  • 网站开发方案及报价开发app软件的步骤
  • 中山网站建设推荐网站设计服务合同
  • 网站开发经验简历专门做孩子早教的网站
  • 深圳网站建设公司那家好上海闵行建网站公司
  • 企业网站布局常见的营销方式有哪几种
  • 绿色风格网站php个人网站模板
  • 广东省农业农村厅网站网站建设及推广方案
  • 钓鱼网站怎么制作视频中山网站建设gdyouzi
  • 微网站怎么做百度关键词排名企业型商务网站制作做法
  • 自己有域名怎么建网站网站开发经典案例
  • 365网站中小型网站建设价位
  • 网站建设公司怎么挖掘客户株洲网站搜索优化