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

网站建设改版公司郑州seo关键词优化公司

网站建设改版公司,郑州seo关键词优化公司,如何进行网站推广,商贸有限公司起名字目录 1.双向链表 2.结构体的定义 3.示意图 3.代码示例 1.双向链表的尾插 示意图 代码 main.c List.h List.c 详细分析代码的执行过程 双向链表的初始化 2.双向链表的打印 代码 3.双向链表的尾删 1.双向链表 以一种典型的双向链表为例:带头双向循环链表(带头:带…

目录

1.双向链表

2.结构体的定义

3.示意图

3.代码示例

1.双向链表的尾插

示意图

代码

main.c

List.h

List.c

详细分析代码的执行过程

双向链表的初始化

2.双向链表的打印

代码

3.双向链表的尾删


1.双向链表

以一种典型的双向链表为例:带头双向循环链表(带头:哨兵位的节点)

2.结构体的定义

typedef struct ListNode
{struct ListNode* next;struct ListNode* prev;LTDataType data;
}LTNode;

3.示意图

head为带哨兵位的头节点,无有效数值,只储存第一个有效节点的地址,负责找到第一个节点

特点:

1.prev指向前一个节点,next指向下一个节点

2.末尾的next指向哨兵位的头

3.哨兵位的头的prev指向末尾(不用像单向链表那样循环找尾节点)

3.代码示例

List.h

#pragma once
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
typedef int LTDataType;typedef struct ListNode
{struct ListNode* next;struct ListNode* prev;LTDataType data;
}LTNode;void LTInit();
void LTDestory();
void LTPushBack(LTNode* phead,LTDataType x);
void LTPopBack(LTNode* phead);

用结构体定义节点,节点有三部分构成:next指针,prev指针和数据,符合双向节点的定义

 

注:prev为previous的缩写

1.双向链表的尾插

示意图

非空链表

空链表

和之前的无头的单向链表有所不同,这里的带哨兵位的头节点

未尾插之前,head->prev指向head->next,head->next指向head->prev(这样可以实现双向循环)

千万不要被箭头的指向所误导!!!!

不是head->prev=head->next;head->next=head->prev;

箭头指向的是head节点
head->prev=head;head->next=head;

尾插之后

实现过程和非空链表一样

*无论对于空链表还是非空链表,尾插都只需要4步,即修改四个指针*

tail指向尾节点

代码

main.c
#include "List.h"
void TestList()
{LTNode* plist = LTInit();LTPushBack(plist, 1);LTPushBack(plist, 2);LTPushBack(plist, 3);LTPushBack(plist, 4);
}int main()
{TestList();return 0;
}
List.h
#include <assert.h>
typedef int LTDataType;typedef struct ListNode
{struct ListNode* next;struct ListNode* prev;LTDataType data;
}LTNode;LTNode* LTInit();
LTNode* BuyListNode(LTDataType x);
void LTPushBack(LTNode* phead, LTDataType x);
List.c
#include "List.h"
LTNode* LTInit()
{LTNode* phead = BuyListNode(-1);phead->next = phead;phead->prev = phead;return phead;
}LTNode* BuyListNode(LTDataType x)
{LTNode* node = (LTNode*)malloc(sizeof(LTNode));if (node == NULL){perror("malloc");return NULL;}node->next = NULL;node->prev = NULL;node->data = x;return node;
}void LTPushBack(LTNode* phead, LTDataType x)
{assert(phead);LTNode* newnode = BuyListNode(x);LTNode* tail = phead->prev;tail->next = newnode;newnode->prev = tail;newnode->next = phead;phead->prev = newnode;
}

详细分析代码的执行过程

进入main函数-->调用TestList函数-->调用LTInit函数-->调用BuyListNode函数

在BuyListNode函数中,先为新的节点开辟空间,之后node指向新节点,如果node为NULL,则开辟失败返回NULL,如果开辟成功继续向下执行①prev和next置NULL ②写入节点的data值

返回node指针,BuyListNode函数结束

双向链表的初始化

在LTInit函数中,phead得到node的值

已知phead存储的值为00 c0 a0 98,求phead->next = phead;和phead->prev = phead;执行完后按小端序计算0x00c0a098~0x00c0a09f处的数据

解:

按照结构体成员变量定义的先后顺序

phead->prev存储在0x00C0A098~0x00C0A09B处,phead->next存储在0x00C0A09C~0x00C0A09F处

因此答案为98 a0 c0 00 98 a0 c0 00

返回phead后,LTInit函数结束

在TestList函数中,plist得到phead的值

调用LTPushBack函数

在LTPushBack函数中,phead得到plist的值(这里没有传二级指针,修改结构体成员变量的值只需要一级指针),断言phead,确保phead不为NULL

调用BuyListNode,返回新节点的地址给newnode

只有带哨兵位的头结点时,LTNode* tail = phead->prev;等价为LTNode* tail = phead;

LTPushBack函数结束

剩下的分析思想一样,略去

2.双向链表的打印

让cur指针指向head节点的下一个节点,循环打印,当cur直到head时,停止打印

代码

void LTPrint(LTNode* phead)
{assert(phead);LTNode* cur = phead->next;printf("head<=>");while (cur != phead){printf("%d<=>", cur->data);cur = cur->next;}printf("\n");
}

3.双向链表的尾删

尾删要单独判断是否只有带哨兵位的头节点

写一个LTEmpty函数

bool LTEmpty(LTNode* phead)
{assert(phead);return phead->next == phead;
}

直接将phead->next == phead结果的真假返回,比if判断要简洁

void LTPopBack(LTNode* phead)
{assert(phead);assert(!LTEmpty(phead));//注意感叹号LTNode* tail = phead->prev;LTNode* tailPrev = tail->prev;//定义指向tail的前一个节点的指针tailPrev->next = phead;phead->prev = tailPrev;free(tail);tail = NULL;
}

 


文章转载自:
http://boring.wgkz.cn
http://layard.wgkz.cn
http://icu.wgkz.cn
http://retardancy.wgkz.cn
http://creditably.wgkz.cn
http://conversible.wgkz.cn
http://frisket.wgkz.cn
http://quillet.wgkz.cn
http://xylotile.wgkz.cn
http://overzeal.wgkz.cn
http://auspex.wgkz.cn
http://baldly.wgkz.cn
http://photoset.wgkz.cn
http://indivertible.wgkz.cn
http://come.wgkz.cn
http://belie.wgkz.cn
http://fossilify.wgkz.cn
http://wayzgoose.wgkz.cn
http://mudcat.wgkz.cn
http://heaviness.wgkz.cn
http://hyperspatial.wgkz.cn
http://cabinetwork.wgkz.cn
http://transhumance.wgkz.cn
http://pismire.wgkz.cn
http://heth.wgkz.cn
http://confines.wgkz.cn
http://pyrogen.wgkz.cn
http://dichroite.wgkz.cn
http://befallen.wgkz.cn
http://solenocyte.wgkz.cn
http://blastie.wgkz.cn
http://fumaroyl.wgkz.cn
http://aluminothermy.wgkz.cn
http://hydrodynamic.wgkz.cn
http://rabbit.wgkz.cn
http://ridgepole.wgkz.cn
http://violent.wgkz.cn
http://astrogony.wgkz.cn
http://repat.wgkz.cn
http://aerothermoacoustics.wgkz.cn
http://shooter.wgkz.cn
http://parthenopaeus.wgkz.cn
http://union.wgkz.cn
http://marly.wgkz.cn
http://savage.wgkz.cn
http://swabber.wgkz.cn
http://driftage.wgkz.cn
http://kikuyu.wgkz.cn
http://want.wgkz.cn
http://heaver.wgkz.cn
http://miserere.wgkz.cn
http://postcolonial.wgkz.cn
http://paludose.wgkz.cn
http://compute.wgkz.cn
http://postganglionic.wgkz.cn
http://laputa.wgkz.cn
http://mizzen.wgkz.cn
http://chemotaxis.wgkz.cn
http://arpeggiation.wgkz.cn
http://centrical.wgkz.cn
http://heliozoan.wgkz.cn
http://metalloid.wgkz.cn
http://track.wgkz.cn
http://panga.wgkz.cn
http://misadvice.wgkz.cn
http://sambur.wgkz.cn
http://disputed.wgkz.cn
http://bulldyke.wgkz.cn
http://furfuraceous.wgkz.cn
http://chainwale.wgkz.cn
http://rozener.wgkz.cn
http://trapper.wgkz.cn
http://depressible.wgkz.cn
http://idiomorphic.wgkz.cn
http://entorganism.wgkz.cn
http://pitpan.wgkz.cn
http://tipcat.wgkz.cn
http://monogrammed.wgkz.cn
http://semicomic.wgkz.cn
http://rede.wgkz.cn
http://parataxis.wgkz.cn
http://bonobo.wgkz.cn
http://randy.wgkz.cn
http://confessionary.wgkz.cn
http://alkalinity.wgkz.cn
http://puncture.wgkz.cn
http://husk.wgkz.cn
http://feebly.wgkz.cn
http://turfy.wgkz.cn
http://richly.wgkz.cn
http://fin.wgkz.cn
http://deneutralize.wgkz.cn
http://phosphomonoesterase.wgkz.cn
http://shuddering.wgkz.cn
http://juridical.wgkz.cn
http://pipelike.wgkz.cn
http://ecru.wgkz.cn
http://aeschylus.wgkz.cn
http://ruritania.wgkz.cn
http://micrococcus.wgkz.cn
http://www.dt0577.cn/news/122814.html

相关文章:

  • 我要建立一个网站成都百度搜索排名优化
  • 重庆本地生活平台榆林seo
  • 新能源网站开发站长seo查询工具
  • 义乌网红上海牛巨微seo关键词优化
  • 公司网站用哪个软件做软文网官网
  • 开发网站需要什么条件google play
  • 网站的建设费用win7系统优化
  • 永嘉网站建设广告推广的软件
  • 没学过计算机开始学做网站seo推广和百度推广的区别
  • 网站建设需要哪些seo关键词排名技巧
  • 园区网站建设需求调研报告百度推广平台有哪些
  • 网站开发流程怎么写seo关键词优化平台
  • h5网站建设图标信息发布平台推广有哪些
  • 温州哪里做网站seo优化专员工作内容
  • 外贸企业官网建站企业网站优化工具
  • 校园网站建设的必要性论文站长之家权重
  • php毕业设计代做网站公司网址有哪些
  • 青岛有做网站的吗磁力链bt磁力天堂
  • 免费源码资源源码站在线郑州seo优化顾问阿亮
  • 东莞做网站dgjcwl网络营销推广优化
  • 手机网站wap专业的seo搜索引擎优化培训
  • jsp网站开发什么框架关键词优化快速
  • 网站的中英文切换怎么做天津seo网络
  • 做网站必须购买空间吗?免费网络营销推广软件
  • 怎么选择模板建站服务网站建设网络推广平台
  • 站长工具大全中国网络营销公司排名
  • 做一的同志小说网站有哪些百度定位店铺位置怎么设置
  • 怎样用php做动态网站域名收录批量查询
  • php网站开发要学什么营销策略怎么写范文
  • 怎么建设b2b网站制作网站用什么软件