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

电脑维护网站模板40个界面ui外包多少钱

电脑维护网站模板,40个界面ui外包多少钱,成都网站制作scgckj,怎样做访问外国网站才能不卡目录 认识带头双向循环链表 双向链表 循环链表 带头链表 带头双向循环链表 双向链表的优势和不足#xff1a; 顺序表的优势和不足#xff1a; 实现带头双向循环链表 创建带头双向循环链表 初始化 创建返回链表的头结点 打印链表 尾插 尾删 头插 头删 查找 在…目录 认识带头双向循环链表  双向链表 循环链表 带头链表 带头双向循环链表 双向链表的优势和不足 顺序表的优势和不足  实现带头双向循环链表 创建带头双向循环链表 初始化 创建返回链表的头结点 打印链表 尾插 尾删 头插 头删 查找 在pos位置前插入 删除pos位置 销毁 总代码 ListNode.h ListNode.c test.c 认识带头双向循环链表  双向链表 我们之前认学习的单链表是包含一个next指针指向下一个结点而双向链表既有next指针又有一个前指针指向前一个结点 循环链表 循环链表就是最后一个结点的next不指向NULL指向第一个结点 带头链表 带头链表就是带哨兵位的头结点head头结点不存数据 带头双向循环链表 无头单向非循环链表结构简单一般不会单独用来存数据。实际中更多是作为其他数据结构的子结构如哈希桶、图的邻接表等等。另外这种结构在笔试面试中出现很多。带头双向循环链表结构最复杂一般用在单独存储数据。实际中使用的链表数据结构都是带头双向循环链表。另外这个结构虽然结构复杂但是使用代码实现以后会发现结构会带来很多优势实现反而简单 双向链表的优势和不足 双向链表的优势 任意位置插入删除都是O(1)按需申请释放合理利用空间不存在浪费 问题 下标的随机访问不方便O(N) 顺序表的优势和不足  顺序表的优势 支持下标的随机访问O(1) 问题 头插或中间插入的效率低O(N)空间不够需要扩容有一定的消耗且可能存在一定的空间浪费只适合尾插尾删 实现带头双向循环链表 同样我们创建三个文件来实现 创建带头双向循环链表 我们在结构体中定义val存数据prev指向前一个结点next指向下一个结点 初始化 让phead-next和phead-prev都指向phead给phead-val赋值为-1最后返回phead 创建返回链表的头结点 打印链表 尾插 尾删 头插 头删 头结点不能删 所以我们要assert(phead-next ! phead) 查找 在pos位置前插入 特殊情况 LTInsert(phead-next,x)就是头插LTInsert(phead,x)就是尾插 删除pos位置 特殊情况 LTErase(phead-next)就是头删LTErase(phead-prev)就是尾删 销毁 总代码 ListNode.h #pragma once #includestdio.h #includestdlib.h #includeassert.h typedef int LTDataType; typedef struct ListNode {LTDataType val;struct ListNode* prev;struct ListNode* next; }LTNode;//初始化 LTNode* LTInit(); //创建返回链表的头结点. LTNode* CreateLTNode(LTDataType x); //打印 void LTPrint(LTNode* phead);//尾插 void LTPushBack(LTNode* phead, LTDataType x); //尾删 void LTPopBack(LTNode* phead); //头插 void LTPushFront(LTNode* phead, LTDataType x); //头删 void LTPopFront(LTNode* phead); //查找 LTNode* LTFind(LTNode* phead, LTDataType x); //在pos位置前插入 void LTInsert(LTNode* pos, LTDataType x); //删除pos位置 void LTErase(LTNode* pos); //销毁 void LTDestroy(LTNode* phead); ListNode.c #define _CRT_SECURE_NO_WARNINGS 1 #includeListNode.h //初始化 LTNode* LTInit() {LTNode* phead CreateLTNode(-1);phead-next phead;phead-prev phead;return phead; } //创建返回链表的头结点. LTNode* CreateLTNode(LTDataType x) {LTNode* newnode (LTNode*)malloc(sizeof(LTNode));if (newnode NULL){perror(malloc fail);exit(-1);}newnode-val x;newnode-next NULL;newnode-prev NULL;return newnode; } //打印 void LTPrint(LTNode* phead) {assert(phead);LTNode* cur phead-next;printf(哨兵位);while (cur ! phead){printf(%d, cur-val);cur cur-next;}printf(哨兵位\n); } //尾插 void LTPushBack(LTNode* phead, LTDataType x) {assert(phead);LTNode* tail phead-prev;LTNode* newnode CreateLTNode(x);tail-next newnode;newnode-prev tail;phead-prev newnode;newnode-next phead; } //尾删 void LTPopBack(LTNode* phead) {assert(phead);assert(phead-next ! phead);LTNode* tail phead-prev;LTNode* tailPrev tail-prev;free(tail);tailPrev-next phead;phead-prev tailPrev; } //头插 void LTPushFront(LTNode* phead, LTDataType x) {assert(phead);LTNode* newnode CreateLTNode(x);LTNode* first phead-next;newnode-next first;first-prev newnode;phead-next newnode;newnode-prev phead; } //头删 void LTPopFront(LTNode* phead) {assert(phead);assert(phead-next ! phead);LTNode* first phead-next;LTNode* second first-next;phead-next second;second-prev phead;free(first);first NULL; } //查找 LTNode* LTFind(LTNode* phead, LTDataType x) {assert(phead);LTNode* cur phead-next;while (cur ! phead){if (cur-val x){return cur;}cur cur-next;}return NULL; } //在pos位置前插入 void LTInsert(LTNode* pos, LTDataType x) {assert(pos);LTNode* newnode CreateLTNode(x);LTNode* posprev pos-prev;posprev-next newnode;newnode-prev posprev;newnode-next pos;pos-prev newnode; } //删除pos位置 void LTErase(LTNode* pos) {assert(pos);LTNode* posprev pos-prev;LTNode* posnext pos-next;posprev-next posnext;posnext-prev posprev;free(pos);pos NULL; } //销毁 void LTDestroy(LTNode* phead) {assert(phead);LTNode* cur phead-next;while (cur ! phead){LTNode* next cur-next;free(cur);cur next;}free(phead);phead NULL; } test.c #define _CRT_SECURE_NO_WARNINGS 1 #includeListNode.h int main() {LTNode* plist LTInit();//尾插LTPushBack(plist, 1);LTPushBack(plist, 2);LTPushBack(plist, 3);LTPushBack(plist, 4);LTPrint(plist);//尾删LTPopBack(plist);LTPrint(plist);//头插LTPushFront(plist, 0);LTPrint(plist);//头删LTPopFront(plist);LTPrint(plist);//查找 pos前插LTNode* pos LTFind(plist, 3);LTInsert(pos, 3);LTPrint(plist);//删除pos位置LTErase(pos);LTPrint(plist);//销毁LTDestroy(plist);return 0; }
http://www.yutouwan.com/news/199767/

相关文章:

  • 无固定ip 建设网站网络推广方案联系昔年下拉
  • 自己做的网站无法访问重庆最新消息今天
  • 免费包装设计网站深圳做夜场做网站
  • 做窗帘的网站中国纪检监察报什么级别
  • 正规的装饰行业网站建设公司黄瓜视频ios
  • 如何设计营销 网站建设建筑网站起名
  • 织梦 公司网站模板智慧物业管理系统
  • 用python网站开发佛山专业网站制作设计
  • 怎么制作小视频陕西seo主管
  • dw怎么建设网站南宁网站建设方案详细
  • 网站线框图上海网站建设学校与管理中专
  • 网站注册凡科wordpress的平台
  • 南宁网站建设 南宁联达亿公司网站制作教学
  • 哪里有做网站较好的公司国外怎么做网站
  • 电商网站购物流程屏蔽wordpress自带编辑器
  • 淘宝客网站要多大空间vs手机网站开发
  • 大型企业网站源码建筑工程网络计划的关键工作有哪些
  • 佛山专业做企业网站你们公司的网站都备案了吗
  • 网站建设图片大全百度关键字优化价格
  • 做网站设计方案怎么写Wordpress分享到微信图标
  • 快速搭建外贸网站wordpress批量添加文章
  • 如果用局域网做网站南阳网站建站培训
  • 开发网站的目标息县网站建设
  • 网站排名优化师应用宝aso优化
  • 安徽先锋网站两学一做常州免费网站建设
  • 网站建设宣传语怎么写网站标头设计
  • 国内创意产品网站广州网站制作十年乐云seo
  • 单页网站开发费用申请一个网站得多钱
  • 有原型怎么做网站wordpress iscategory
  • 娱乐类网站怎么建设丽江建设信息网站