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

做问卷调查的是哪个网站好北京平面设计公司招聘信息

做问卷调查的是哪个网站好,北京平面设计公司招聘信息,源码网站开发,server2012做网站链表的分类: 链表的结构非常多样,以下情况组合起来就有8种(2 x 2 x 2)链表结构: 带头:指的是链表中有哨兵位节点,该哨兵位节点即头节点 1. 双向链表的结构 注意:这⾥的“带头”跟前面…

链表的分类:

链表的结构非常多样,以下情况组合起来就有8种(2 x 2 x 2)链表结构:
带头:指的是链表中有哨兵位节点,该哨兵位节点即头节点

1. 双向链表的结构

注意:这⾥的“带头”跟前面我们说的“头节点”是两个概念,实际前面的在单链表阶段称呼不严
谨,但是为了同学们更好的理解就直接称为单链表的头节点。
带头链表面的头节点,实际为“哨兵位”,哨兵位节点不存储任何有效元素,只是站在这里“放哨
的”。
“哨兵位”存在的意义:
遍历循环链表避免死循环。

2. 双向链表的实现

1 typedef int LTDataType;
2 typedef struct ListNode
3 {
4 struct ListNode* next; //指针保存下⼀个节点的地址
5 struct ListNode* prev; //指针保存前⼀个节点的地址
6 LTDataType data;
7 }LTNode;
8 //void LTInit(LTNode** pphead);
9 LTNode* LTInit();
10 void LTDestroy(LTNode* phead);
11 void LTPrint(LTNode* phead);
12 bool LTEmpty(LTNode* phead);
13 void LTPushBack(LTNode* phead, LTDataType x);
14 void LTPopBack(LTNode* phead);
15 void LTPushFront(LTNode* phead, LTDataType x);
16 void LTPopFront(LTNode* phead);
17 //在pos位置之后插⼊数据
18 void LTInsert(LTNode* pos, LTDataType x);
19 void LTErase(LTNode* pos);
20 LTNode *LTFind(LTNode* phead,LTDataType x);
#define _CRT_SECURE_NO_WARNINGS
#include"list.h"
void LTPrint(LTNode* phead)
{LTNode* pcur = phead->next;while (pcur != phead){printf("%d->", pcur->data);pcur = pcur->next;}printf("\n");
}
//申请节点
LTNode* LTBuyNode(LTDataType x)
{LTNode* node = (LTNode*)malloc(sizeof(LTNode));if (node == NULL){perror("malloc fail");exit(1);}node->data = x;node->next = node->prev = node;return node;
}
//初始化
//void LTInit(LTNode** pphead)
//{
//	//给双向链表创建一个哨兵位
//	*pphead = LTBuyNode(-1);
//
//}
LTNode* LTInit()
{LTNode* phead = LTBuyNode(-1);return phead;
}
//尾插
void LTPushBack(LTNode* phead, LTDataType x)
{assert(phead);LTNode* newnode = LTBuyNode(x);//phead phead->prev newnodenewnode->prev = phead->prev;newnode->next = phead;phead->prev->next = newnode;phead->prev = newnode;
}
//头插
void LTPushFront(LTNode* phead, LTDataType x)
{assert(phead);LTNode* newnode = LTBuyNode(x);newnode->prev = phead;newnode->next = phead->next;phead->next->prev = newnode;phead->next = newnode;
}
//尾删
void LTPopBack(LTNode* phead, LTDataType x)
{//链表必须有效且不能为空assert(phead && phead->next != phead);LTNode* del = phead->prev;del->prev->next = phead;phead->prev = del->prev;//删除delfree(del);del = NULL;}
//头删
void LTPopFront(LTNode* phead, LTDataType x)
{assert(phead && phead->next != phead);LTNode* del = phead->next;phead->next = del->next;del->next->prev = phead;//删除delfree(del);del = NULL;
}
LTNode* LTFind(LTNode* phead, LTDataType x)
{LTNode* pcur = phead->next;while (pcur != phead){if (pcur->data == x){return pcur;}pcur = pcur->next;}//没找到return NULL;
}
//在pos位置之后插入数据
void LTInsert(LTNode* pos, LTDataType x)
{assert(pos);LTNode* newnode = LTBuyNode(x);newnode->next = pos->next;newnode->prev = pos;pos->next->prev = newnode;pos->next = newnode;
}
//删除pos节点
void LTErase(LTNode* pos)
{//pos理论上来说不能为phead,但是没有参数phead,无法增加校验assert(pos);pos->next->prev = pos->prev;pos->prev->next = pos->next;free(pos);pos = NULL;
}
//销毁链表
void LTDesTroy(LTNode* phead)
{assert(phead);LTNode* pcur = phead->next;while (pcur != phead){LTNode* next = pcur->next;free(pcur);pcur = next;}//此时pcur指向pheadfree(phead);phead = NULL;
}

3. 顺序表和双向链表的优缺点分析

不同点顺序表链表(单链表)
存储空间上物理上一定连续逻辑上连续,但物理上不一定连续
随机访问支持O(1)不支持:O(n)
任意位置插入或者删除元素可能需要搬移元素只需要修改指针指向
插入动态顺序表没有容量的概念
应用场景元素高效存储+频繁访问任意位置插入和频繁删除

http://www.dtcms.com/wzjs/803110.html

相关文章:

  • 怎么做英文版的网站网站模板演示
  • 公司网站建设服务费怎么做账定制网站多少钱
  • 几何图形生成网站wordpress设置禁止蜘蛛抓取
  • 黄冈网站推广在线做那个类型的网站赚钱
  • 中职网络营销教案北京官网优化公司
  • 贸易公司网站设计腾讯云服务器优惠
  • 企业网站内容建设怎么做一个静态网页
  • 网站内容管理系统 下载怎么注册公司微信
  • 购物网站建设图标大全wordpress 豆瓣插件
  • 优秀网站主题深圳市深圳市住房和建设局网站
  • 广西建设职业技术学院网站android开发软件下载
  • 网站制作一条龙全包软件定制开发多少钱
  • 望京 网站开发设计素材网站哪几个好用
  • 网站建设账务处理德清县建设局网站
  • 昆明商城网站建设可视化编辑器wordpress
  • 用.aspx做网站礼品公司网站建设
  • 网站主题模板天使投资平台官网
  • 沧州瑞智网站建设电商公司简介模板
  • 网站建设过时了吗wordpress core主题
  • 网站域名所有权企业网络营销策划与分析
  • 大学生网站的设计风格如何做网络营销技巧
  • 厦门市同安区建设工程质量安全监督站网站做dw网站图片怎么下载地址
  • dedecms 企业网站国外dns服务器地址
  • 做电子商城网站的济南建设网站需要
  • 画册排版设计网站微商城手机网站制作公司
  • 网站舆情监控怎么做无锡网站制作电话多少
  • 屏山移动网站建设珠海企业医疗网站建设
  • 吴桥网站厦门数字引擎 怎么打不开网站
  • 生活服务网站开发与设计网站建设承诺
  • 网站地图怎么建设wordpress代码语言