当前位置: 首页 > 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://wiki.neutronadmin.com/news/362055/

相关文章:

  • 做网站属于程序员吗上海比较有名的大公司有哪些
  • 外贸公司的网站怎么做孝感市门户网站
  • 对网站建设的讲话二级注册建造师信息查询官网入口
  • 网站建设兼职在哪找南通做外贸网站
  • 上海建设银行青浦分行网站wordpress 搜索 自定义字段
  • 广州建网站的公司wordpress更新要ftp
  • 黄浦网站建设推广大连网络营销公司有哪些
  • 为学校网站建设wordpress建站环境搭建
  • p站关键词排名桂林 网
  • 江苏城市建设职业学院网站个人或主题网站建设实验报告
  • 国内漂亮大气的网站做网站的软件项目进度计划
  • c2c模式有哪些电商平台上海网站排名优化怎么做
  • 十堰哪里有做网站的企业做网站用什么建站系统
  • 免费网站建设自带后台管理程序网站开发 语言
  • 网站建设跟网站开发有什么区别吗数据调查的权威网站
  • 网络教学平台昆明理工大学企业网站seo优
  • 新兴街做网站公司建设网站需要什么步骤
  • 什么在56网站做推广连云港百度推广网站建设
  • 前端 兼职做网站邯郸市建设局网站2017
  • 企业建网站的工作WordPress page filed
  • 端州网站建设做彩票交流网站犯法吗
  • 济南助企网站建设公司怎么样电商网站开发过程
  • 哈尔滨做网站的oeminc潢川网站建设
  • 6731官方网站下载网站的目标
  • wordpress站点管理员做淘宝客找商品网站有哪些
  • 网站域名注册地址wordpress少女祈祷
  • 网站制作公司多少人海南注册公司需要什么条件
  • 麻城建设局网站停办天津站建站时间
  • 深圳网站建设选哪家网站建设清单
  • 网站建设为什么不给源代码西安好玩的景点