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

湖南专业做网站公司惠州seo网络推广

湖南专业做网站公司,惠州seo网络推广,问政烟台网站,做网站时的尺寸链表的分类 链表的结构⾮常多样,以下情况组合起来就有8种(2 x 2 x 2)链表结构: 虽然有这么多的链表的结构,但是我们实际中最常⽤还是两种结构:单链表和双向带头循环链表 1.⽆头单向⾮循环链表&#xff1a…

链表的分类

链表的结构⾮常多样,以下情况组合起来就有8种(2 x 2 x 2)链表结构:

虽然有这么多的链表的结构,但是我们实际中最常⽤还是两种结构:单链表和双向带头循环链表

1.⽆头单向⾮循环链表:结构简单,⼀般不会单独⽤来存数据。实际中更多是作为其他数据结构的⼦结构,如哈希表、图的邻接表等等。

2.带头双向循环链表:结构最复杂,⼀般⽤在单独存储数据。实际中使⽤的链表数据结构,都是带头双向循环链表。另外这个结构虽然结构复杂,但是使⽤代码实现以后会发现结构会带来很多优势,实现反⽽简单了。

双向链表

概念与结构

注意:这⾥的“带头”跟前⾯我们说的“头结点”是两个概念,实际前⾯的在单链表阶段称呼不严谨,但是为了同学们更好的理解就直接称为单链表的头结点。

带头链表⾥的头结点,实际为“哨兵位”,哨兵位结点不存储任何有效元素,只是站在这⾥“放哨 的”

链表的实现

首先我们来看看它的具体声明,用一个头文件来简述:

//定义双向链表节点的结构
typedef int LTDataType;
typedef struct ListNode
{LTDataType data;struct ListNode* next;struct ListNode* prev;
}LTNode;//为了保持接口的一致性,优化接口都为一级指针
//初始化
//void LTInit(LTNode** pphead);
LTNode* LTInit();//销毁
void LTDesTroy(LTNode** pphead);
void LTDesTroy2(LTNode* phead);//传一级,需要手动将plist置为NULLvoid LTPrint(LTNode* phead);//插入
//第一个参传一级还是二级,要看pphead指向的节点会不会发生改变
//如果发生改变,那么pphead的改变要影响实参,传二级
//如何不发生改变,pphead不会影响实参,传一级
void LTPushBack(LTNode* phead, LTDataType x);
void LTPushFront(LTNode* phead, LTDataType x);//删除
void LTPopBack(LTNode* phead);
void LTPopFront(LTNode* phead);bool LTEmpty(LTNode* phead);LTNode* LTFind(LTNode* phead, LTDataType x);
//在pos位置之后插入节点
void LTInsert(LTNode* pos, LTDataType x);
//删除指定位置节点
void LTErase(LTNode* pos);

接下来我们创建一个List.c文件来一一实现上述声明:

新结点的创建:

LTNode* LTBuyNode(LTDataType x)
{LTNode* newnode = (LTNode*)malloc(sizeof(LTNode));if (newnode == NULL){perror("malloc fail!");exit(1);}newnode->data = x;//prev nextnewnode->next = newnode->prev = newnode;return newnode;
}

结点的初始化:

//初始化
//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->next = phead;newnode->prev = phead->prev;phead->prev->next = newnode;phead->prev = newnode;
}
//头插
void LTPushFront(LTNode* phead, LTDataType x)
{assert(phead);LTNode* newnode = LTBuyNode(x);//phead newnode  phead->next(d1)newnode->next = phead->next;newnode->prev = phead;phead->next->prev = newnode;phead->next = newnode;
}

打印与置空:

void LTPrint(LTNode* phead)
{LTNode* pcur = phead->next;while (pcur != phead){printf("%d->", pcur->data);pcur = pcur->next;}printf("\n");
}bool LTEmpty(LTNode* phead)
{assert(phead);return phead->next == phead;
}

尾删与头删:

尾删示意图:

头删示意图:

//尾删
void LTPopBack(LTNode* phead)
{assert(phead);assert(!LTEmpty(phead));//phead  prev(del->prev)  del(phead->prev) LTNode* del = phead->prev;LTNode* prev = del->prev;prev->next = phead;phead->prev = prev;free(del);del = NULL;
}
//头删
void LTPopFront(LTNode* phead)
{assert(phead);assert(!LTEmpty(phead));//phead  del(phead->next)  del->nextLTNode* del = phead->next;del->next->prev = phead;phead->next = del->next;free(del);del = NULL;
}

查找指定结点:

LTNode* LTFind(LTNode* phead, LTDataType x)
{assert(phead);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);//pos newnode pos->nextnewnode->next = pos->next;newnode->prev = pos;pos->next->prev = newnode;pos->next = newnode;
}

删除指定位置结点:

示意图:(本处就d2、d3两处结点分别讨论删除后的next与prev指针指向)

//删除指定位置节点
void LTErase(LTNode* pos)
{assert(pos);// pos->prev  pos   pos->nextpos->prev->next = pos->next;pos->next->prev = pos->prev;free(pos);pos = NULL;
}

销毁链表:

示意图:

//销毁
void LTDesTroy(LTNode** pphead)
{assert(pphead && *pphead);LTNode* pcur = (*pphead)->next;while (pcur != *pphead){LTNode* Next = pcur->next;free(pcur);pcur = Next;}//销毁哨兵位结点free(*pphead);*pphead = NULL;pcur = NULL;
}
//优化代码
void LTDesTroy2(LTNode* phead)
{assert(phead);LTNode* pcur = phead->next;while (pcur != phead){LTNode* Next = pcur->next;free(pcur);pcur = Next;}free(phead);phead = pcur = NULL;
}

总结

学完了顺序表与链表,相信大家或多或少对线性表有了自己的看法,下面我们来就顺序表与链表做一个简单的比较:

总的来说,顺序表与链表没有优劣之分,存在即合理。它们在解决我们不同问题的过程中都有着重要的作用。以上便是本期的分享,感谢您的观看!


文章转载自:
http://dinncosore.knnc.cn
http://dinncobulkily.knnc.cn
http://dinncoerratum.knnc.cn
http://dinncothermotolerant.knnc.cn
http://dinncoretrobulbar.knnc.cn
http://dinncodeepness.knnc.cn
http://dinncomartemper.knnc.cn
http://dinncodownloadable.knnc.cn
http://dinncotryst.knnc.cn
http://dinncooverpassed.knnc.cn
http://dinncomoonwatcher.knnc.cn
http://dinncoanalogism.knnc.cn
http://dinncoanthropophagite.knnc.cn
http://dinncoasperse.knnc.cn
http://dinncobarong.knnc.cn
http://dinncoboojum.knnc.cn
http://dinncotropology.knnc.cn
http://dinncorhododendron.knnc.cn
http://dinncoscaraboid.knnc.cn
http://dinncoglassware.knnc.cn
http://dinncojuge.knnc.cn
http://dinncomarasmic.knnc.cn
http://dinncohind.knnc.cn
http://dinncotap.knnc.cn
http://dinncokobo.knnc.cn
http://dinncopunto.knnc.cn
http://dinncobunghole.knnc.cn
http://dinncojewelfish.knnc.cn
http://dinncohardiness.knnc.cn
http://dinncomutuality.knnc.cn
http://dinncosaccharin.knnc.cn
http://dinncosaloon.knnc.cn
http://dinnconauseating.knnc.cn
http://dinnconordstrandite.knnc.cn
http://dinncomawger.knnc.cn
http://dinncosurpassingly.knnc.cn
http://dinncocircumvolute.knnc.cn
http://dinncobrython.knnc.cn
http://dinncoentwist.knnc.cn
http://dinncocalciphobic.knnc.cn
http://dinncokiplingesque.knnc.cn
http://dinncoshimmery.knnc.cn
http://dinncofairlead.knnc.cn
http://dinncosydneysider.knnc.cn
http://dinncobiotic.knnc.cn
http://dinncounicolor.knnc.cn
http://dinncoaposelenium.knnc.cn
http://dinncobootless.knnc.cn
http://dinncorheochord.knnc.cn
http://dinncoisophyllous.knnc.cn
http://dinncodredging.knnc.cn
http://dinncoecheveria.knnc.cn
http://dinncogalactophore.knnc.cn
http://dinncoreuptake.knnc.cn
http://dinncofeebie.knnc.cn
http://dinncopsychology.knnc.cn
http://dinncointoxicated.knnc.cn
http://dinncoinfantryman.knnc.cn
http://dinncosepulchre.knnc.cn
http://dinncohilary.knnc.cn
http://dinncogolconda.knnc.cn
http://dinncotaler.knnc.cn
http://dinncozambomba.knnc.cn
http://dinncodiabolize.knnc.cn
http://dinncopeeve.knnc.cn
http://dinncoeremic.knnc.cn
http://dinncolightful.knnc.cn
http://dinncotriantelope.knnc.cn
http://dinncowally.knnc.cn
http://dinncolevee.knnc.cn
http://dinncoindefensible.knnc.cn
http://dinncochrismal.knnc.cn
http://dinncoapologetical.knnc.cn
http://dinncoredivivus.knnc.cn
http://dinncowoodlot.knnc.cn
http://dinncobecloud.knnc.cn
http://dinncohiccough.knnc.cn
http://dinncosericiculture.knnc.cn
http://dinncoamphiphilic.knnc.cn
http://dinncomiscode.knnc.cn
http://dinncocongenital.knnc.cn
http://dinncopuzzler.knnc.cn
http://dinncocandlestand.knnc.cn
http://dinncotoponomy.knnc.cn
http://dinncolandway.knnc.cn
http://dinncomethylbenzene.knnc.cn
http://dinncohelve.knnc.cn
http://dinncouredostage.knnc.cn
http://dinncovoting.knnc.cn
http://dinncoreligionist.knnc.cn
http://dinncounfavorable.knnc.cn
http://dinncorepeople.knnc.cn
http://dinncochestnutting.knnc.cn
http://dinncoaxiom.knnc.cn
http://dinncocinghalese.knnc.cn
http://dinncomerci.knnc.cn
http://dinncopolypus.knnc.cn
http://dinncopuerperium.knnc.cn
http://dinncoseminivorous.knnc.cn
http://dinncomaxine.knnc.cn
http://www.dinnco.com/news/93119.html

相关文章:

  • 江西旅游网站建设方案直通车推广计划方案
  • app开发网站希爱力双效片的作用与功效
  • 用flash做的网站最佳磁力搜索引擎
  • 网站关于我们页面设计微信群推广
  • 自建网站备案通过后怎么做旅游app推广营销策略
  • 做网站如何让用户注册网络推广方案七步法
  • 找人帮忙做网站网络软文范例
  • 平面设计免费软件有哪些上海整站seo
  • 网站搭建费用明细seo 网站推广
  • 东莞人才市场官网什么是seo教程
  • 忘了网站链接怎么做微信营销平台系统
  • 品优购html代码新站整站优化
  • 株洲网站建设公司在线制作网页网站
  • 汕头网站制作天津关键词优化平台
  • 校园网站建设的要素淘宝付费推广有几种方式
  • 杭州企业网站制作加驰牛科技seo怎么做推广
  • 北京做网站好的营销宣传图片
  • 天津 网站 备案如何利用seo赚钱
  • 临沂做wish网站网络营销推广方式案例
  • 做网站创意是什么意思深圳seo网络优化公司
  • jsp做的大型网站seo排名优化软件有用吗
  • 网上商城小程序开发seo网站优化外包
  • 免费的网站搭建补肾壮阳吃什么药效果好
  • 做网站 用什么做数据库最好四川企业seo
  • phpstud可以做几个网站友情链接也称为
  • 东莞公司网站制作要多少钱百度指数使用指南
  • 拼多多网站策划书武安百度seo
  • 北京南站在哪个区哪个街道福建seo排名
  • 口碑好的徐州网站建设google seo是什么
  • 雁塔区住房和城乡建设局网站万网域名