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

网站怎么做登录模块厦门营销网站制作

网站怎么做登录模块,厦门营销网站制作,电商运营数据六大指标,用微魔方做的网站一定要加链表的分类: 链表的结构非常多样,以下情况组合起来就有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/608934.html

相关文章:

  • 网站建设存在问题餐饮品牌设计网站
  • 建筑焊工证查询网站官方网网站开发工程师岗位职责要求
  • 石家庄网站快速排名关注清远发布
  • 中国香烟网上商城优化防控举措
  • 站长之家素材给手机做网站的公司
  • 云速成美站开发房地产需要多少钱
  • 高校廉洁文化建设网站国内做网站
  • 远涛网站建设杭州seo中心
  • 学校网站下载网页版微信无法登陆
  • 简单描述一下网站制作的流程泉州优化营商环境
  • 无网站做cpa个人网站推广app
  • 舟山网站seohtml设计软件
  • 如何做视频网站 需要注意的地方网络网站建设10大指标
  • 做电影网站哪个源码好seo网站排名
  • 秦皇岛项目建设上海seo培训中心
  • 网站开发jd珠海新盈科技 网站建设
  • 汕头网站搜索优化网站建设老李教学网站
  • 做数码相的网站排名优化网站
  • 注册公司的网站装企营销系统
  • 宁波网站建设使用技巧分享网站我们的客户
  • 设计个人网站模板深圳皇冠科技有限公司网站
  • 网站建设知识平台wordpress登录界面logo
  • 哪家公司设计网站济南效果图制作公司
  • 建设部评职称查询网站网站主题模板下载不了
  • 长沙网站建设1681989WordPress全局屏蔽谷歌
  • 免费素材网站图库wordpress热门标签调用
  • wordpress国内网站吗泰安的网络建设公司
  • 某些网站网速慢app设计工具
  • 制作外贸网站的公司简介基于django的电子商务网站设计
  • 利用别人域名做自己的网站建站之星怎么安装