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

上海自助建站 上海网站建设网站打开是目录结构图

上海自助建站 上海网站建设,网站打开是目录结构图,宜兴做网站哪家好,济南单位网站建设双向链表实质上是在单向链表的基础上加上了一个指针指向后面地址 单向链表请参考http://t.csdn.cn/3Gxk9 物理结构 首先我们看一下两种链表的物理结构 我们可以看到#xff1a;双向在单向基础上加入了一个指向上一个地址的指针#xff0c;如此操作我们便可以向数组一样操作…双向链表实质上是在单向链表的基础上加上了一个指针指向后面地址 单向链表请参考http://t.csdn.cn/3Gxk9 物理结构 首先我们看一下两种链表的物理结构 我们可以看到双向在单向基础上加入了一个指向上一个地址的指针如此操作我们便可以向数组一样操作了而且尾插也更加方便复杂度从原来的O(n)变为O(1)并且查找也可以运用二分查找。 一些基础操作 头插 头删 尾插 尾删 接下来我们来进行代码实现 头文件以及要实现的函数声明 #pragma once #includestdio.h #includestdlib.h #includestring.h typedef int LTDataType; typedef struct Slist {LTDataType val;struct Slist* next;struct Slist* random; }ListNode;// 创建返回链表的头结点. ListNode* ListCreate(); // 双向链表销毁 void ListDestory(ListNode* pHead); // 双向链表打印 void ListPrint(ListNode* pHead); // 双向链表尾插 void ListPushBack(ListNode* pHead, LTDataType x); // 双向链表尾删 void ListPopBack(ListNode* pHead); // 双向链表头插 void ListPushFront(ListNode* pHead, LTDataType x); // 双向链表头删 void ListPopFront(ListNode* pHead); // 双向链表查找 ListNode* ListFind(ListNode* pHead, LTDataType x); // 双向链表在pos的前面进行插入 void ListInsert(ListNode* pos, LTDataType x); // 双向链表删除pos位置的节点 void ListErase(ListNode* pos); // 扩容 ListNode* my_malloc(LTDataType x); 函数实现 #include dslist.hListNode* my_malloc(LTDataType x)//由于后续要频繁使用到扩容所以我们直接创一个扩容函数 {ListNode* newnode (ListNode*)malloc(sizeof(ListNode));newnode-val x;newnode-random NULL;newnode-next NULL;return newnode; }ListNode* ListCreate() //创建一个双向链表 {ListNode* head (ListNode * )malloc(sizeof(ListNode));head-val -1; head-next NULL;head-random NULL;return head; }void ListDestory(ListNode* pHead) //销毁这个双线链表 {while (pHead)//将每个节点都free掉{ListNode* mid pHead;pHead pHead-next;mid-next NULL;free(mid);} }void ListPrint(ListNode* pHead) //打印双向链表 {ListNode* mid pHead;while (mid) //循环一个一个打印{printf(%d-, mid-val);mid mid-next;}printf(NULL); }void ListPushBack(ListNode* pHead, LTDataType x) //尾插 {ListNode* newnode my_malloc(x);if (pHead-next NULL) //判断链表是否为空如果为空则只需要插入一个。{newnode-random pHead; //由于循环链表需要将头节点的random指向插入元素 newnode-next NULL;pHead-next newnode;pHead-random newnode;}else //如果不为空则正常尾插{ListNode* mid pHead-random; //由于双向 头节点的random指针直接指向尾部所以不需要循环找尾mid-next newnode;newnode-random mid;pHead-random newnode;} }void ListPopBack(ListNode* pHead) //尾删 {if (pHead-next NULL) //判断是否为空{return;}else{ListNode* mid pHead-random; //正常尾删pHead-random mid-random;mid-random-next NULL;free(mid);} }void ListPushFront(ListNode* pHead, LTDataType x) //头插 {if (pHead-next NULL) //如果为空 则相当于尾插 调用尾插函数即可{ListPushBack(pHead, x);}else //不为空正常头插{ListNode* nownode my_malloc(x); nownode-next pHead-next; //将nownode 的next指向 phead的nextnownode-random pHead; //nownode的random指向 pheadpHead-next nownode; //phead的next指向nownodenownode-next-random nownode;} }void ListPopFront(ListNode* pHead) //头删 {if (pHead-next NULL){return;}else{if (pHead-next pHead-random){ListPopBack(pHead);}else{ListNode* mid pHead-next;pHead-next mid-next;mid-next-random pHead;free(mid);}} }ListNode* ListFind(ListNode* pHead, LTDataType x) //寻找元素 {ListNode* left pHead-next;ListNode* right pHead-random;while (left right) //二分查找{if (left-val x){return left;}if (right-val x){return right;}left left-next;right right-random;}return NULL; }void ListInsert(ListNode* pos, LTDataType x) {ListNode* newnode my_malloc(x);ListNode* mid pos-random;mid-next newnode;pos-random newnode;newnode-next pos; }void ListErase(ListNode* pos) {ListNode* next pos-next;ListNode* last pos-random;next-random last;last-next next;free(pos); }有什么疑惑欢迎大家留言。
http://www.huolong8.cn/news/150728/

相关文章:

  • 南京门户网站网站制作企业有哪些
  • 网站建设技术线路选择ktv网站模板
  • 怀来县住房和城乡规划建设局网站中卫网红美食打卡地
  • 计算机网络资源网站建设论文电商平台开发需要哪些技术人员
  • 南京网站南京网站开发住房和城乡建设部监理网站
  • 猫扑网站开发的网络游戏光遇网页制作素材
  • 做外链的博客网站嵌入式开发要学哪些课程
  • 做网站销售有前景吗ps简单网页设计模板图片
  • wordpress单图模式广安seo外包
  • 一个虚拟空间可以做两个网站吗三门峡网站设计
  • 深圳企业网站定制公司wordpress转换为中文版
  • 网站后台会员管理网站设网站设计
  • 那个免费做微信订阅号的网站海南省建设培训与职业资格注册中心网站
  • 商丘睢阳区市政建设局网站景安安装wordpress提示错误
  • 网站建设流程总结邢台163信息网
  • 苏州市建设工程质量监督站网站网站子目录设计
  • 沈阳中联做网站如何知道一个网站做的什么推广
  • 公司网站建设注意软文推广怎么做
  • 菠菜网站建设重庆自助企业建站模板
  • 站长之家统计中国建设工程造价管理协会网站招聘
  • 网站设计公司青岛兰州建设一个网站多少钱
  • 网站建设坂田做网站天津
  • 娃哈哈网站建设策划书如何做网站焦点图
  • 潍坊网站制作企业国内小型电商平台有哪些
  • asp建设的网站制作南京专业网站制作公司有哪些
  • 高新网站建设多少钱赤峰做网站公司
  • 企业服饰网站模板设计公司和装修公司的区别
  • 网站免费注册app制作软件企业
  • 制作网站最新工具网站备案号被收回
  • 网站开发项目安全加固的要求discuz系统