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

网站设计影响seo的因素装修公司最怕三种人

网站设计影响seo的因素,装修公司最怕三种人,网站架设标准,淄博网站建设专家提示#xff1a;文章写完后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 目录 前言 1. 双向链表的结构 2. 双向链表的实现 2.1 头文件 ——双向链表的创建及功能函数的定义 2.2 源文件 ——双向链表的功能函数的实现 2.3 源文件 ——双向链表功能的… 提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档 目录 前言 1. 双向链表的结构 2. 双向链表的实现 2.1 头文件 ——双向链表的创建及功能函数的定义 2.2 源文件 ——双向链表的功能函数的实现 2.3 源文件 ——双向链表功能的测试 4.双向链表的操作示意图 3.顺序表和双向链表的优缺点分析 总结 前言 世上有两种耀眼的光芒一种是正在升起的太阳一种是正在努力学习编程的你!一个爱学编程的人。各位看官我衷心的希望这篇博客能对你们有所帮助同时也希望各位看官能对我的文章给与点评希望我们能够携手共同促进进步在编程的道路上越走越远! 提示以下是本篇文章正文内容下面案例可供参考 1. 双向链表的结构 注意这里的“带头”跟前面我们说的“头节点”是两个概念实际前面的在单链表阶段称呼不严 谨但是为了同学们更好的理解就直接称为单链表的头节点。 带头链表里的头节点实际为“哨兵位”哨兵位节点不存储任何有效元素只是站在这里“放哨的” “哨兵位”存在的意义 遍历循环链表避免死循环。 2. 双向链表的实现 2.1 头文件 ——双向链表的创建及功能函数的定义 List.h #pragma once #include stdio.h #include stdlib.h #include assert.h #include stdbool.h//定义双向链表的节点的结构 typedef int STDataType;typedef struct ListNode {STDataType data;struct ListNode* next;//保存下一个节点的地址struct ListNode* prev;//保存前一个节点的地址 }LTNode;//链表的初始化 //void LTInit(LTNode** pphead);//前提我们要传入一个头节点//我们更倾向于第二种初始化的方法 //因为双向链表为空只有一个哨兵位哨兵位节点是不能被操作的即不能被改变 LTNode* LTInit();//不需要传入参数调用该方法之后给我们返回一个头节点//在双向链表中不会改变哨兵位所以可以传一级指针 //尾插入操作 void LTPushBack(LTNode* phead, STDataType x);//头插 void LTPushFront(LTNode* phead, STDataType x);//链表的打印 void LTPrint(LTNode* phead);//尾删 void LTPopBack(LTNode* phead); //头删 void LTPopFront(LTNode* phead);//在pos位置之后插入的数据 void LTInsert(LTNode* pos, STDataType x); //删除pos位置的节点 void LTErase(LTNode* pos); LTNode* LTFind(LTNode* phead, STDataType x);//链表的销毁 void LTDestroy(LTNode* phead); 2.2 源文件 ——双向链表的功能函数的实现 List.c #define _CRT_SECURE_NO_WARNINGS 1 #include List.h//链表的初始化 //前提我们要传入一个头节点 //void LTInit(LTNode** pphead) //{ // *pphead (LTNode*)malloc(sizeof(LTNode)); // if (*pphead NULL) // { // perror(malloc); // return; // } // //节点有三部分内容数据 前驱指针 后继指针 // (*pphead)-data -1;//哨兵位 // (*pphead)-next (*pphead)-prev *pphead; //}//链表初始化 //不需要传入参数调用该方法之后给我们返回一个头节点 LTNode* LTInit() {LTNode* phead (LTNode*)malloc(sizeof(LTNode));if (phead NULL){perror(malloc);return;}phead-data -1;phead-next phead-prev phead;return phead; }//申请一个新的节点 LTNode* ListBuyNode(STDataType x) {LTNode* node (LTNode*)malloc(sizeof(LTNode));node-data x;node-next node-prev NULL;return node; }//链表的打印 void LTPrint(LTNode* phead) {LTNode* cur phead-next;while (cur ! phead){printf(%d-, cur-data);cur cur-next;}printf(\n); }//尾插入操作 void LTPushBack(LTNode* phead, STDataType x) {assert(phead);LTNode* node ListBuyNode(x);//先处理新节点node的前驱和后继指针node-prev phead-prev;node-next phead;//在处理phead-prev之前的尾节点和pheadphead-prev-next node;phead-prev node; }//头插 void LTPushFront(LTNode* phead, STDataType x) {assert(phead);LTNode* node ListBuyNode(x);//node的节点 next prevnode-prev phead;node-next phead-next;//处理phead phead-nextphead-next-prev node;phead-next node; }//尾删 void LTPopBack(LTNode* phead) {assert(phead);//链表不能为空链表链表中只有一个哨兵位节点assert(phead-next ! phead);LTNode* del phead-prev;//先处理del-prev节点del-prev-next phead;//处理pheadphead-prev del-prev;free(del);del NULL; } //头删 void LTPopFront(LTNode* phead) {assert(phead phead-next ! phead);LTNode* del phead-next;//phead del-nextdel-next-prev phead;phead-next del-next;free(del);del NULL; }//在pos位置之后插入的数据 void LTInsert(LTNode* pos, STDataType x) {assert(pos);LTNode* node ListBuyNode(x);//node的prev 和 nextnode-next pos-next;node-prev pos;//pos的next 和 pos-next的prevpos-next node;node-next-prev node; } //删除pos位置的节点 void LTErase(LTNode* pos) {assert(pos);//pos-prev:next pos pos-next:prevpos-next-prev pos-prev;pos-prev-next pos-next;free(pos);pos NULL; } //查找数据 LTNode* LTFind(LTNode* phead, STDataType x) {assert(phead);LTNode* cur phead-next;while (cur ! phead){if (cur-data x){return cur;}cur cur-next;}return 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;//我们将phead指向的空间释放掉plist实参的空间也被释放掉了phead置为空//但是此时plist实参为野指针还需要我们手动置为空 } 2.3 源文件 ——双向链表功能的测试 test.c #define _CRT_SECURE_NO_WARNINGS 1#include List.hvoid ListTest() {//第一种初始化方法/*LTNode* plist NULL;LTInit(plist);*///第二种初始化方法;LTNode* plist LTInit();//尾插LTPushBack(plist, 1);LTPushBack(plist, 2);LTPushBack(plist, 3);LTPushBack(plist, 4);//打印LTPrint(plist);头插//LTPushFront(plist, 5);//LTPushFront(plist, 6);//LTPushFront(plist, 7);//LTPrint(plist);//尾删//LTPopBack(plist);//头删/*LTPopFront(plist);LTPopFront(plist);*///测试指定位置之后插入//LTNode* find LTFind(plist, 1);//LTInsert(find, 11);/*LTErase(find);LTPrint(plist);*///销毁链表LTDestroy(plist);//传一级指针的要手动将plist置为空plist NULL; } int main() {ListTest();return 0; } 4.双向链表的操作示意图 3.顺序表和双向链表的优缺点分析 总结 好了本篇博客到这里就结束了如果有更好的观点请及时留言我会认真观看并学习。不积硅步无以至千里不积小流无以成江海。
http://www.yutouwan.com/news/362055/

相关文章:

  • 扬州建设公司网站益阳做网站
  • 网站开发设计总结及心得体会哪个网站专业做饲料
  • 个人网站做什么内容网站如何调用百度地图
  • 珠海电商网站制作私自建立网站网站判决书
  • 一个网站怎么赚钱网站建设关键性开发工具
  • 免费域名注册和免费建站滨州做网站的公司
  • 网站规划与建设的流程与方法 高中信息技术wordpress博客vieu模板
  • 网站建设前的分析第一小节内容做动态文字的网站
  • 网络网站设计培训如何自己做网站并开发软件
  • 成都建站培训seo外链查询工具
  • 视频播放网站建设手机版网站快照如何做
  • 网站如何做网页查询网络服务公司名字
  • 河南seo网站开发网站建设的基本术语
  • 网站建设前准备做的网站怎么联网
  • php网站修改主页内容注册公司需要登录的网址
  • 宁波网站建设开发多少钱网页制作的论文
  • 网站设置价格错误不愿意发货常用网站建设技术是什么意思
  • wordpress主题 网站大全刚成立公司如何做网站
  • 龙口建网站公司价格如何做网站栏目
  • 如何修改网站模版阿里云建设网站买哪个服务
  • 网站制作wordpress外网访问群晖wordpress
  • 艺术视频手机网站可以做吗中高端社交网站建设服务商
  • 创意网站设计团队如何做企业交易网站
  • 企业网站备案 优帮云WordPress火车头规则
  • 网站互动方式钦州建设银行社招聘网站
  • 公司备案号查询网站wordpress163邮件
  • 有了域名 接下来怎么做网站别墅设计 网站模板
  • 响水网站建设找哪家好关键词推广数据分析
  • 做网站需要服务器和什么网站建立明细预计表
  • html5企业网站案例怎么做新网站上线通稿