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

建网站培训学校厦门建网站公司

建网站培训学校,厦门建网站公司,被骗去国外做网站网站推广,中山网站建设模板招商目录 往期 1 - 带头双向循环链表(双链表) 1.1 - 接口声明 1.2 - 接口实现 1.2.1 - 双向链表初始化 1.2.2 - 动态申请一个结点 1.2.3 - 双向链表销毁 1.2.4 - 双向链表打印 1.2.5 - 双向链表判空 1.2.6 - 双向链表尾插 1.2.7 - 带头双向循环链表(双链表) 1.1 - 接口声明 1.2 - 接口实现 1.2.1 - 双向链表初始化 1.2.2 - 动态申请一个结点 1.2.3 - 双向链表销毁 1.2.4 - 双向链表打印 1.2.5 - 双向链表判空 1.2.6 - 双向链表尾插 1.2.7 - 双向链表尾删 1.2.8 - 双向链表头插 1.2.9 - 双向链表头删 1.2.10 - 双向链表查找 1.2.11 -  双向链表在pos的前面进行插入 1.2.12 - 双向链表删除pos位置的节点 2 - 顺序表和链表的区别 3 - 完整代码 3.1 - List.c 3.2 - List.h 3.3 - Test.c 往期 链表-单链表 1 - 带头双向循环链表(双链表) 1.1 - 接口声明 #pragma once#define _CRT_SECURE_NO_WARNINGS 1 #include stdio.h #include stdlib.h #include assert.h #include stdbool.h// 带头双向循环链表增删查改实现 typedef int LTDataType;typedef struct LTNode {LTDataType data;struct LTNode* next;struct LTNode* prev; }LTNode;// 双向链表初始化 LTNode* LTInit();// 动态申请一个结点 LTNode* BuyLTNode(LTDataType x);// 双向链表销毁 void LTDestory(LTNode* phead);// 双向链表打印 void LTPrint(LTNode* phead);// 双向链表判空 bool LTEmpty(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); 1.2 - 接口实现 1.2.1 - 双向链表初始化 // 双向链表初始化 LTNode* LTInit() {LTNode* phead BuyLTNode(-1);phead-next phead;phead-prev phead;return phead; } 1.2.2 - 动态申请一个结点 // 动态申请一个结点 LTNode* BuyLTNode(LTDataType x) {LTNode* newnode (LTNode*)malloc(sizeof(LTNode));if (newnode NULL){perror(malloc fail);return NULL;}newnode-data x;newnode-next NULL;newnode-prev NULL;return newnode; }1.2.3 - 双向链表销毁 // 双向链表销毁 void LTDestory(LTNode* phead) {assert(phead);LTNode* cur phead-next;while (cur ! phead){LTNode* next cur-next;free(cur);cur next;}free(phead); }1.2.4 - 双向链表打印 // 双向链表打印 void LTPrint(LTNode* phead) {assert(phead);printf(guard);LTNode* cur phead-next;while (cur ! phead){printf(%d, cur-data);cur cur-next;}printf(\n); } 1.2.5 - 双向链表判空 // 双向链表判空 bool LTEmpty(LTNode* phead) {assert(phead);return phead-next phead; } 1.2.6 - 双向链表尾插 // 双向链表尾插 void LTPushBack(LTNode* phead, LTDataType x) {assert(phead);LTNode* tail phead-prev;LTNode* newnode BuyLTNode(x);tail-next newnode;newnode-prev tail;newnode-next phead;phead-prev newnode;// 复用// LTInsert(phead, x); } // 尾插测试 void Test1() {LTNode* plist LTInit();LTPushBack(plist, 1);LTPushBack(plist, 2);LTPushBack(plist, 3);LTPushBack(plist, 4);LTPushBack(plist, 5);LTPrint(plist);LTDestory(plist);plist NULL; } 1.2.7 - 双向链表尾删 // 双向链表尾删 void LTPopBack(LTNode* phead) {assert(phead);assert(!LTEmpty(phead));LTNode* tail phead-prev;LTNode* tailPrev tail-prev;free(tail);tailPrev-next phead;phead-prev tailPrev;// 复用// LTErase(phead-prev); }// 尾删测试 void Test2() {LTNode* plist LTInit();LTPushBack(plist, 1);LTPushBack(plist, 2);LTPushBack(plist, 3);LTPushBack(plist, 4);LTPushBack(plist, 5);LTPrint(plist);LTPopBack(plist);LTPrint(plist);LTPopBack(plist);LTPrint(plist);LTPopBack(plist);LTPrint(plist);LTPopBack(plist);LTPrint(plist);LTPopBack(plist);LTPrint(plist);LTDestory(plist);plist NULL; } 1.2.8 - 双向链表头插 // 双向链表头插 void LTPushFront(LTNode* phead, LTDataType x) {assert(phead);LTNode* newnode BuyLTNode(x);newnode-next phead-next;phead-next-prev newnode;phead-next newnode;newnode-prev phead;// 复用// LTInsert(phead-next, x); } // 头插测试 void Test3() {LTNode* plist LTInit();LTPushFront(plist, 1);LTPushFront(plist, 2);LTPushFront(plist, 3);LTPushFront(plist, 4);LTPushFront(plist, 5);LTPrint(plist);LTDestory(plist);plist NULL; } 1.2.9 - 双向链表头删 // 双向链表头删 void LTPopFront(LTNode* phead) {assert(phead);assert(!LTEmpty(phead));LTNode* first phead-next;LTNode* second first-next;phead-next second;second-prev phead;free(first);// 复用// LTErase(phead-next); } // 头删测试 void Test4() {LTNode* plist LTInit();LTPushBack(plist, 1);LTPushBack(plist, 2);LTPushBack(plist, 3);LTPushBack(plist, 4);LTPushBack(plist, 5);LTPrint(plist);LTPopFront(plist);LTPrint(plist);LTPopFront(plist);LTPrint(plist);LTPopFront(plist);LTPrint(plist);LTPopFront(plist);LTPrint(plist);LTPopFront(plist);LTPrint(plist);LTDestory(plist);plist NULL; } 1.2.10 - 双向链表查找 // 双向链表查找 LTNode* LTFind(LTNode* phead, LTDataType x) {assert(phead);LTNode* cur phead-next;while (cur ! phead){if (cur-data x){return cur;}cur cur-next;}return NULL; } 1.2.11 -  双向链表在pos的前面进行插入 // 双向链表在pos的前面进行插入 void LTInsert(LTNode* pos, LTDataType x) {assert(pos);LTNode* prev pos-prev;LTNode* newnode BuyLTNode(x);prev-next newnode;newnode-prev prev;newnode-next pos;pos-prev newnode; }// 查找插入测试 void Test5() {LTNode* plist LTInit();LTPushBack(plist, 1);LTPushBack(plist, 2);LTPushBack(plist, 3);LTPushBack(plist, 4);LTPushBack(plist, 5);LTPrint(plist);LTNode* pos LTFind(plist, 3);if (pos)LTInsert(pos, 99);LTPrint(plist);LTDestory(plist);plist NULL; } 1.2.12 - 双向链表删除pos位置的节点 // 双向链表删除pos位置的节点 void LTErase(LTNode* pos) {assert(pos);LTNode* posPrev pos-prev;LTNode* posNext pos-next;posPrev-next posNext;posNext-prev posPrev;free(pos); } 2 - 顺序表和链表的区别 不同点顺序表链表存储空间上物理上一定连续逻辑上连续但物理上不一定连续随机访问支持O(1)不支持:O(N)任意位置插入或者删除元素可能需要搬移元素效率低O(N)只需修改指针指向插入动态顺序表空间不够时需要扩容没有容量的概念应用场景元素高效存储频繁访问任意位置插入和删除频繁缓存利用率高低 注缓存利用率参考存储体系结构以及局部原理性。 3 - 完整代码 3.1 - List.c #include List.h// 双向链表初始化 LTNode* LTInit() {LTNode* phead BuyLTNode(-1);phead-next phead;phead-prev phead;return phead; }// 动态申请一个结点 LTNode* BuyLTNode(LTDataType x) {LTNode* newnode (LTNode*)malloc(sizeof(LTNode));if (newnode NULL){perror(malloc fail);return NULL;}newnode-data x;newnode-next NULL;newnode-prev NULL;return newnode; }// 双向链表销毁 void LTDestory(LTNode* phead) {assert(phead);LTNode* cur phead-next;while (cur ! phead){LTNode* next cur-next;free(cur);cur next;}free(phead); }// 双向链表打印 void LTPrint(LTNode* phead) {assert(phead);printf(guard);LTNode* cur phead-next;while (cur ! phead){printf(%d, cur-data);cur cur-next;}printf(\n); }// 双向链表判空 bool LTEmpty(LTNode* phead) {assert(phead);return phead-next phead; }// 双向链表尾插 void LTPushBack(LTNode* phead, LTDataType x) {assert(phead);LTNode* tail phead-prev;LTNode* newnode BuyLTNode(x);tail-next newnode;newnode-prev tail;newnode-next phead;phead-prev newnode;// 复用// LTInsert(phead, x); }// 双向链表尾删 void LTPopBack(LTNode* phead) {assert(phead);assert(!LTEmpty(phead));LTNode* tail phead-prev;LTNode* tailPrev tail-prev;free(tail);tailPrev-next phead;phead-prev tailPrev;// 复用// LTErase(phead-prev); }// 双向链表头插 void LTPushFront(LTNode* phead, LTDataType x) {assert(phead);LTNode* newnode BuyLTNode(x);newnode-next phead-next;phead-next-prev newnode;phead-next newnode;newnode-prev phead;// 复用// LTInsert(phead-next, x); }// 双向链表头删 void LTPopFront(LTNode* phead) {assert(phead);assert(!LTEmpty(phead));LTNode* first phead-next;LTNode* second first-next;phead-next second;second-prev phead;free(first);// 复用// LTErase(phead-next); }// 双向链表查找 LTNode* LTFind(LTNode* phead, LTDataType x) {assert(phead);LTNode* cur phead-next;while (cur ! phead){if (cur-data x){return cur;}cur cur-next;}return NULL; }// 双向链表在pos的前面进行插入 void LTInsert(LTNode* pos, LTDataType x) {assert(pos);LTNode* prev pos-prev;LTNode* newnode BuyLTNode(x);prev-next newnode;newnode-prev prev;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); } 3.2 - List.h #pragma once#define _CRT_SECURE_NO_WARNINGS 1 #include stdio.h #include stdlib.h #include assert.h #include stdbool.h// 带头双向循环链表增删查改实现 typedef int LTDataType;typedef struct LTNode {LTDataType data;struct LTNode* next;struct LTNode* prev; }LTNode;// 双向链表初始化 LTNode* LTInit();// 动态申请一个结点 LTNode* BuyLTNode(LTDataType x);// 双向链表销毁 void LTDestory(LTNode* phead);// 双向链表打印 void LTPrint(LTNode* phead);// 双向链表判空 bool LTEmpty(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); 3.3 - Test.c #include List.h// 尾插测试 void Test1() {LTNode* plist LTInit();LTPushBack(plist, 1);LTPushBack(plist, 2);LTPushBack(plist, 3);LTPushBack(plist, 4);LTPushBack(plist, 5);LTPrint(plist);LTDestory(plist);plist NULL; }// 尾删测试 void Test2() {LTNode* plist LTInit();LTPushBack(plist, 1);LTPushBack(plist, 2);LTPushBack(plist, 3);LTPushBack(plist, 4);LTPushBack(plist, 5);LTPrint(plist);LTPopBack(plist);LTPrint(plist);LTPopBack(plist);LTPrint(plist);LTPopBack(plist);LTPrint(plist);LTPopBack(plist);LTPrint(plist);LTPopBack(plist);LTPrint(plist);LTDestory(plist);plist NULL; }// 头插测试 void Test3() {LTNode* plist LTInit();LTPushFront(plist, 1);LTPushFront(plist, 2);LTPushFront(plist, 3);LTPushFront(plist, 4);LTPushFront(plist, 5);LTPrint(plist);LTDestory(plist);plist NULL; }// 头删测试 void Test4() {LTNode* plist LTInit();LTPushBack(plist, 1);LTPushBack(plist, 2);LTPushBack(plist, 3);LTPushBack(plist, 4);LTPushBack(plist, 5);LTPrint(plist);LTPopFront(plist);LTPrint(plist);LTPopFront(plist);LTPrint(plist);LTPopFront(plist);LTPrint(plist);LTPopFront(plist);LTPrint(plist);LTPopFront(plist);LTPrint(plist);LTDestory(plist);plist NULL; }// 查找插入测试 void Test5() {LTNode* plist LTInit();LTPushBack(plist, 1);LTPushBack(plist, 2);LTPushBack(plist, 3);LTPushBack(plist, 4);LTPushBack(plist, 5);LTPrint(plist);LTNode* pos LTFind(plist, 3);if (pos)LTInsert(pos, 99);LTPrint(plist);LTDestory(plist);plist NULL; }int main() {return 0; } 感谢大佬们支持 互三啦
http://www.w-s-a.com/news/348751/

相关文章:

  • 青岛李村网站设计公司cms建站平台
  • 做saas网站可行吗许昌抖音推广公司
  • 网站建设找谁做seo基础知识培训
  • 微网站怎么做的好建设网站不会写代码
  • 广州外贸网站制作wordpress信息搜索插件
  • 福建高端网站建设个人公众号怎么制作教程
  • 企业网站有哪些举几个例子wordpress ie兼容插件
  • 高端的深圳网站页面设计福清市建设局官方网站
  • 安装网站到服务器合肥建设干部学校网站
  • 影视网站如何做销售案例网站
  • 建设网站对比方案龙岗网站开发公司
  • 网站开发标准网站建设公司兴田德润可信赖
  • 如何建设一个公众号电影网站自动seo优化
  • 个人网站能备案吗酱香拿铁采取了哪些网络营销方式
  • 网站建设及推广好做吗自己做的网站加入购物车价格
  • 涡阳在北京做网站的名人注册一个免费的网站
  • 三门峡建设环境局网站公司注册网上核名通道
  • 叶县建设局网站要看网海外域名是多少
  • 网站运行环境配置Wordpress支付时效
  • logo设计网站知乎港北网站建设
  • 北京市保障性住房建设投资中心官方网站有限责任公司的特点
  • 做网站卖互联网营销怎么做
  • 晋州市建设局网站建站网站系统
  • 专业网站优化方案广东微信网站制作报价表
  • 北京网站建设公司分形科技简述营销网站建设策略
  • 汉中网站建设有限公司vue网站开发
  • 网站备案背景幕布阳江东莞网站建设
  • 北京网站建设要多少钱html网站标签
  • 做兼职做网站的是什么公司网站怎么修改
  • 舆情监控都有哪些内容西安seo网站公司