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

荆州哪有做网站的公司外贸公司大全

荆州哪有做网站的公司,外贸公司大全,毕业网站设计代做,林业建设协会网站特点#xff1a; 结构#xff1a;指向前一结点指针数据指向后一结点指针由于循环#xff0c;尾结点的下一结点next指向头结点#xff08;哨兵结点#xff09;空的双向链表只有自循环的哨兵结点#xff08;头结点#xff09; 模拟实现双向链表 LIST.h #define _CRT_… 特点 结构指向前一结点指针数据指向后一结点指针由于循环尾结点的下一结点next指向头结点哨兵结点空的双向链表只有自循环的哨兵结点头结点  模拟实现双向链表 LIST.h #define _CRT_SECURE_NO_WARNINGS 1 #includestdio.h #includeassert.h #includestdlib.h #includestdbool.h//定义双向链表结构 typedef int LTDataType;//链表数据类型 typedef struct ListNode {LTDataType data;struct ListNode* prev;struct ListNode* next; }LTNode;//初始化 void LTInit(LTNode** pphead); LTNode* LTInit2();//销毁 链表的销毁是整个都销毁的 void LTDesTory(LTNode** pphead); void LTDesTory2(LTNode* phead);//传一级我们需要手动将plist置为NULL//打印链表 void LTPrint(LTNode* phead);//尾插数据 //第一个参数传一级还是二级要看pphead指向的节点会不会发生改变 //如果发生改变那么pphead的改变要影响实参传二级 //如果不发生改变pphead不会影响实参传一级 //我们通过传递的一级指针来找到头结点就可以找到之后的节点了//那么我们在插入新节点的时候受到影响的节点有之前的尾节点和哨兵位以及新节点 void LTPushBack(LTNode* phead, LTDataType x);//头插数据 void LTPushFront(LTNode* phead, LTDataType x);//尾删数据 void LTPopBack(LTNode* phead);//头删数据 void LTPopFront(LTNode* phead);//判断链表是否为空 bool LTEmpty(LTNode* phead);//查找数据 LTNode* LTFind(LTNode* phead, LTDataType x); //在pos位置之后插入节点 void LTInsert(LTNode* pos, LTDataType x);//删除指定位置的节点 void LTIErase(LTNode* pos); LIST.c #define _CRT_SECURE_NO_WARNINGS 1 #includeLIST.h//创建结点 LTNode* buyNode(LTDataType x) {LTNode* newnode (LTNode*)malloc(sizeof(LTNode*));if (newnode NULL) {perror(malloc fail!);exit(1);}newnode-data x;newnode-next newnode-prev newnode;//初步实现双头自循环的空链表return newnode; } //初始化1 传参初始化 void LTInit(LTNode** pphead) {//创建一个哨兵结点头结点*pphead buyNode(-1); } //初始化2 返回值初始化 LTNode* LTInit2() {LTNode* phead buyNode(-1);return phead; }//销毁 链表的销毁是整个都销毁的 void LTDesTory(LTNode** pphead) {//哨兵位不能先销毁assert(pphead *pphead);LTNode* pcur (*pphead)-next;//从哨兵位的下一结点开始遍历销毁while (pcur ! (*pphead)) {LTNode* Next pcur-next;//创建pcur下一结点方便遍历销毁free(pcur);pcur Next;}//跳出循环说明哨兵位之后的全销毁了//现在释放销毁哨兵位free(*pphead);*pphead pcur NULL; }//初次错误示范 void LTDesToryError(LTNode** pphead) {LTNode* pcur (*pphead)-next;LTNode* Next pcur-next;while (pcur!*pphead) {free(pcur);pcur Next;Next Next-next;}pcur Next NULL; }//void LTDesTory2(LTNode* phead);//传一级我们需要手动将plist置为NULL//打印链表 void LTPrint(LTNode* phead) {LTNode* pcur phead-next;//记住第一个结点是哨兵位下一个结点while (pcur ! phead) {printf(%d-, pcur-data);pcur pcur-next;}printf(\n); }//尾插数据 //第一个参数传一级还是二级要看pphead指向的节点会不会发生改变 //如果发生改变那么pphead的改变要影响实参传二级 //如果不发生改变pphead不会影响实参传一级 //我们通过传递的一级指针来找到头结点就可以找到之后的节点了//那么我们在插入新节点的时候受到影响的节点有之前的尾节点和哨兵位以及新节点 void LTPushBack(LTNode* phead, LTDataType x) {assert(phead);//哨兵位 phead 新结点 newnode 尾结点pcur(phead-prev)LTNode* pcur phead-prev;LTNode* newnode buyNode(x);//newnode的指针修改prev指向上个尾节点next指向哨兵位newnode-prev pcur;newnode-next phead;//原先的尾节点next指针-哨兵位现在next-newnode//哨兵位的prev原本-尾节点,现在让prev-newnodepcur-next newnode;phead-prev newnode; }//头插数据 void LTPushFront(LTNode* phead, LTDataType x) {assert(phead);//哨兵位phead 新结点newnode 第一个结点 pcur(phead-next)LTNode* newnode buyNode(x);LTNode* pcur phead-next;//插入newnodeprev指向哨兵位next指向pcurnewnode-prev phead;newnode-next pcur;//哨兵位的next原头结点的prev分别指向newnodephead-next newnode;pcur-prev newnode; } //————————ERROR注意删除要检查链表是否为空—————————— //判断链表是否为空 bool LTEmpty(LTNode* phead) {assert(phead);//error!!! return phead NULL;不是判断哨兵位phead第一个结点是哨兵位下一结点phead-next!return phead-next phead;//如果哨兵位next指向自己说明是自循环的只有哨兵位的空链表 }//链表为空返回true //尾删数据 void LTPopBack(LTNode* phead) {assert(phead);//哨兵位不得为空assert(!LTEmpty(phead));//链表不得为空//哨兵位phead 尾结点 del(phead-prev) 尾结点前一结点 del-prevLTNode* del phead-next;//删除尾结点 哨兵位的prev指向del-prev, 尾结点的前一结点的next-哨兵位del-prev-next phead;//注意这俩行代码不可调换phead-prev del-prev;//先改了头结点的指向 del也会跟着改//删除完之后释放delfree(del);del NULL; }//头删数据 void LTPopFront(LTNode* phead) {assert(phead);assert(!LTEmpty(phead));//哨兵位phead 要删除的第一个结点del(phead-next) 新的第一结点del-nextLTNode* del phead-next;//删除结点 哨兵位的next指向新第一结点 新的第一结点的prev指向哨兵位del-next-prev phead;phead-next del-next;//释放delfree(del);del NULL; }//查找数据 //遍历链表直至再次遇到哨兵位找一圈了没找到就是没有 LTNode* LTFind(LTNode* phead, LTDataType x) {LTNode* pcur phead-next;//记住从第一个结点不是pheadwhile (pcur ! phead) {//找到了if (pcur-data x) {return pcur;}pcur pcur-next;}//遍历循环找了一圈没找到return NULL; } //在pos位置之后插入节点 void LTInsert(LTNode* pos, LTDataType x) {//创建一个新结点LTNode* newnode buyNode(x);//pos newnode pos-next//先安newnodenewnode-next pos-next;newnode-prev pos;//先连接pos后面的再连pospos-next-prev newnode;pos-next newnode; }//删除指定位置的节点 void LTIErase(LTNode* pos) {assert(pos);//传过来的位置不为空/*pos前面的节点pos-prevpos后面的节点pos-next删除pos影响这两个节点pos前面指针的节点的next指针-Pos后面的节点pos后面的节点的prev指针就-pos前面的节点*///pos-prev pos pos-nextpos-prev-next pos-next;pos-next-prev pos-prev;free(pos);pos NULL; }
http://www.hkea.cn/news/14522376/

相关文章:

  • 扬中零壹网站建设蛋糕店的网站建设咋写
  • 功能型网站介绍哪里有做桥梁模型的网站
  • 如何百度搜到网站在哪些网站可以发布推广信息
  • 杭州网站建设蒙特网站服务器管理维护
  • 什么是伪静态网站做兼职的设计网站有哪些工作内容
  • 视频生成链接网站西安网站建设熊掌号
  • 南宁市网站设计wordpress 首页显示标题
  • 上虞区建设局网站网页设计与制作教程第四版清华大学出版社
  • 免费货源在线网站重庆网站设计软件
  • 建设部门网站网站开发的技术风险
  • 网站的空间是哪个网站可以做图片链接
  • 获取整个网站源码工具找个人给我做电影网站好
  • 网页设计设计网站建设wordpress 横向扩展
  • 马鞍山建设工程监督站网站国内最大的网站制作公司
  • 做网站的公司需要什么资质wordpress主题 电子商务
  • 深圳h5网站建设万网是做网站的吗
  • 禅城教育网站建站知道内容怎样让别人做网站
  • 上鼎工程建设有限公司网站现在学ui设计就业前景
  • 做英文网站公司家政网站建设方案分析
  • 做一个企业的网站怎么做wordpress的注册文件在哪儿
  • 文昌网站 做炸饺子化纤公司网站建设
  • 优秀企业网站设计制作江苏SEO网站建设
  • 互联网行业的开发网站soho个人可以建网站吗
  • 免费建站的站点网站腾讯文档wordpress
  • 一米电子产品营销型网站案例展示wordpress 清理插件
  • 网站建设季度考核评价工作wordpress改地址后打不开
  • 大学网站建设包括哪些课程交换链接营销的成功案例
  • 建设门户网站的可行性分析展馆设计图
  • 哪些网站可以找兼职做室内设计深圳的公司
  • 上海哪家公司可以做网站阿里云 wordpress主机