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

四川成都网站制作公司一站式快速网站排名多少钱

四川成都网站制作公司,一站式快速网站排名多少钱,如何优化网站关键词,wordpress 有没有上级目录的写权限文章目录 1、单链表1.1 链表的创建1.2 链表的遍历1.3 链表的删除1.4 链表的插入1.5 链表和数组 2、双向链表2.1 双链表的创建2.2 双链表的删除2.3 双链表的插入2.4 双向循环链表2.5 双链表优缺点 1、单链表 链表是一种物理存储单元上非连续、非顺序的存储结构,插入…

文章目录

  • 1、单链表
    • 1.1 链表的创建
    • 1.2 链表的遍历
    • 1.3 链表的删除
    • 1.4 链表的插入
    • 1.5 链表和数组
  • 2、双向链表
    • 2.1 双链表的创建
    • 2.2 双链表的删除
    • 2.3 双链表的插入
    • 2.4 双向循环链表
    • 2.5 双链表优缺点

1、单链表

链表是一种物理存储单元上非连续、非顺序的存储结构,插入和删除速度快,并且不需要像数组一样预先开辟空间链表结构可以充分利用计算机内存空间,实现灵活地内存动态管理。

Pasted-image-2025040117473344f072a03e24e176.png

链表由一系列结点组成,每个结点包括两个部分:

  • 存储数据元素的数据域
  • 存储下一个结点地址的指针域

1.1 链表的创建

1.定义结构体存储结点信息

struct node {int data;  //存储当前结点的数据值node *next;  /存储下一个结点的地址
}

2.创建头尾节点

  • 使用 new 运算符来动态申请空间
  • 使用 -> 结构体指针运算符来访问内部成员
  • 头结点数据域通常不做存储(删除结点只能通过它前一个结点指向它后一个结点,头结点没有前一个结点)

*head.datahead->data 效果是一样的。

node *head, *tail;  //定义头结点和尾结点
head = new node;  //动态申请内存空间
head->next = NULL;  //指针域初始化为空
tail = head;  //此时的头结点也是尾结点

3.添加新结点

int x;
while(cin >> x) {  //会自动获取到输入内容的结束位置,再终止输入node *p = new node;  //定义新结点p,动态申请新的空间p->data = x;  //给数据域赋值p->next = NULL;  //指针域初始化为空tail->next = p;  //连到尾结点后面tail = p;  //尾结点更新为当前的p
}

1.2 链表的遍历

node *p = head;  //使用p作为当前结点,从头开始遍历
while(p->next != NULL) {  //判断下一个结点是否为空cout << p->next->data << " ";  //输出下一个结点的数据,因为头结点无数据p = p->next;  //p更新为下一个结点
} 

1.3 链表的删除

删除单链表中p结点的下一个结点

p->next = p->next->next;  //将p所指的下一个结点修改为下一个结点的下一个结点

PixPin_2025-04-01_18-13-0901a34a3c0f76eff8.gif

1.4 链表的插入

在p结点之后插入一个结点s

node *s = new node;  //动态申请新的空间
s->next = p->next;  //先将新结点的指针域指向p的下一个结点
p->next = s;  //再将p的下一个结点修改为s

PixPin_2025-04-01_18-13-398f2e7f5b50888dea.gif

1.5 链表和数组

数组:

  • 优点:
    随机访问性强,查找速度快。
  • 缺点:
    插入和删除效率低,,可能浪费内存,,内存空间要求高,数组大小固定,不能动态拓展。

链表:

  • 优点:
    插入删除速度快;内存利用率高,不会浪费内存;大小没有固定,拓展很灵活。
  • 缺点:
    不能随机查找,必须从第一个开始遍历,查找效率低。
查找插入删除
数组O(1)O(n)O(n)
链表O(n)O(1)O(1)

2、双向链表

双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继直接前驱,所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点后继结点

Pasted-image-20250401183027dc7f17708b708341.png

双向链表每个节点有三个部分:

  • 存储数据元素的数据域
  • 存储上一个节点地址的指针域
  • 存储下一个结点地址的指针域

2.1 双链表的创建

1.定义结构体存储结点信息

struct node {int data;  //存储当前结点的数据值node *pre, *next;  /存储前驱和后继结点的地址
}

2.创建头尾节点

node *head, *tail;  //定义头结点和尾结点
head = new node;  //动态申请内存空间
head->pre = NULL;  //前驱指针初始化为空
head->next = NULL;  //后继指针初始化为空
tail = head;  //此时的头结点也是尾结点

3.添加新结点

int x;
while(cin >> x) {  //会自动获取到输入内容的结束位置,再终止输入node *p = new node;  //定义新结点p,动态申请新的空间p->data = x;  //给数据域赋值p->pre = tail;  //前驱指针指向前驱节点tailp->next = NULL;  //后继指针初始化为空tail->next = p;  //尾结点的后继指针指向ptail = p;  //尾结点更新为当前的p
}

2.2 双链表的删除

删除双链表中p结点

p->pre->next = p->next;  //将p上一个结点的后继指针指向p的下一个结点
p->next->pre = p->pre;  //将p下一个结点的前驱指针指向p的上一个结点

PixPin_2025-04-01_18-48-56578d0f7d9e7af118.gif

2.3 双链表的插入

在p结点之后插入一个结点s

node *s = new node;  //动态申请新的空间
s->next = p->next;  //新结点的后继指针域指向p的下一个结点
s->pre = p;  //新结点的前驱指针指向p
p->next->pre = s;  // p的下一个结点的前驱指针指向s
p->next = s;  //p的后继指针指向s

PixPin_2025-04-01_18-51-5051df3f5373f70761.gif

2.4 双向循环链表

双向循环链表:最后一个结点的后继指针指向头结点,且头结点的前驱指针指向最后一个结点。

head->pre = tail;
tail->next = head;

2.5 双链表优缺点

  • 优点:
    从双向链表中的任意一个结点开始,都可以很方便地访问前驱结点和后继结点
  • 缺点:
    增加删除节点复杂,需要多分配一个指针存储空间
http://www.dtcms.com/wzjs/255437.html

相关文章:

  • 芜湖企业做网站此网站三天换一次域名
  • 同仁微网站建设工作室优化大师网页版
  • 广州网站搭建多少钱百度搜索最多的关键词
  • vs2013 网站开发广告外链购买交易平台
  • wordpress如何设置目录权限设置鸡西seo
  • 以下哪个域名是做游戏网站的廊坊自动seo
  • 京东可以免费做特效的网站优就业seo怎么样
  • 免费看电视剧的网站2021怎么样推广自己的产品
  • 微信小程序开发平台游戏百度快速排名优化服务
  • ps彩屏做的好的网站百度官网首页登陆
  • 谁帮58同城做的网站吗提高工作效率的工具
  • 中国十佳网站建设公司火蝠电商代运营靠谱吗
  • 西安微网站制作it培训
  • 帝国cms电影网站模板陕西今日头条新闻
  • 注册深圳公司恒诚信价格宝鸡百度seo
  • 网站建设企业实践日志有什么引流客源的软件
  • 自己做网站用哪个软件软文有哪几种类型
  • 网站没有排名恢复2345网址导航
  • 江西网站建设公司线上推广的渠道有哪些
  • 商务网站建设策划书排名网
  • 网站双机热备怎么做东莞网站推广软件
  • 深圳响应式网站开发百度网页版官网
  • 做企业网站的流程俄罗斯引擎搜索
  • 三明网站优化360排名检测
  • 陌上香坊是做盗版的网站吗品牌推广经典案例
  • 网站单页发布教育培训机构平台
  • 建材板材网站源码 asp常见的网络营销手段
  • 网站建设600分站优缺点世界十大搜索引擎排名
  • 毕设做网站答辩一般问什么东莞哪种网站推广好
  • 怎么样做网站或产品推广新区seo整站优化公司