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

网站如何做留言板头条发布视频成功显示404

网站如何做留言板,头条发布视频成功显示404,沭阳那家做网站的,乌鲁木齐建设网站公司目录 1.什么是链表? 2.链表的分类 (1)无头单向非循环链表: (2)带头双向循环链表: 3.单链表的实现 (1)单链表的定义 (2)动态创建节点 &#…

目录

 

1.什么是链表?

2.链表的分类

(1)无头单向非循环链表:

(2)带头双向循环链表:

3.单链表的实现

 (1)单链表的定义

(2)动态创建节点

(3)单链表打印

(4)单链表尾插

(5)单链表头插

(6)单链表尾删

(7)单链表头删

(8)单链表查找

(9)单链表在pos位置之后插入

(10)单链表在pos位置之前插入

(11)单链表删除pos位置的节点

(12)单链表销毁

 4.运行结果

5.结语 



4da1dfe51db24bf1b72fbdc29e0e7e93.jpeg

1.什么是链表?

链表是一种 物理存储结构上非连续、非顺序的存储结构,数据元素的 逻辑顺序是通过链表中的 指针链 次序实现的 。
逻辑图如下:
a83f5df4179a4feca08f0f62d06a39f7.png

可以看出链表有两个变量,一个存放数据,另一个存放指向下一节点的指针;

此外链表还具有以下特征:

(1)链表在逻辑上连续,但在物理上不一定连续;

(2)链表的节点在现实中一般都是在堆上开辟出来的,所以使用结束后需要释放空间;

(3)从堆上申请的空间是按照一定策略分配的,所以物理空间可能连续也可能不连续。

 

2.链表的分类

链表按单向双向、无头带头、循环非循环可分为多种,这里我们介绍最常用的两种——无头单向非循环链表、带头双向循环链表。本篇文章将详细介绍无头单向非循环链表(简称单链表)的增删查改等的实现。

(1)无头单向非循环链表:

fafc7d2473954f09b3d06e85bfe83539.jpeg

 

结构简单,一般不会单独用来存数据。实际中更多是作为 其他数据结构的子结 ,如哈希桶、图的邻接表等等。另外这种结构在 笔试面试中出现很多。

(2)带头双向循环链表:

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

3.单链表的实现

 (1)单链表的定义

typedef int SLTDateType;
typedef struct SListNode
{SLTDateType data;//存放数据struct SListNode* next;//存放下一个节点的指针
}SListNode;

结构体定义两个变量,一个是SLDataType类型的数据,另一个时结构体的指针用来存放下一节点指针;

(2)动态创建节点


//申请新的节点,返回指向节点的指针
SListNode* BuySListNode(SLTDateType x)
{SListNode* buynode = (SListNode*)malloc(sizeof(SListNode));buynode->data = x;buynode->next = NULL;return buynode;
}

(3)单链表打印


// 单链表打印
void SListPrint(SListNode* plist)
{//assert(plist);//没有节点,指针为空,断言,为空也可打印空指针所以不需要断言SListNode* psl = plist;//用一个临时变量接收,如果不喜欢也可以不用while (psl)//利用while循环遍历单链表{printf("%d->", psl->data);//打印单链表指向的数据psl = psl->next;//继续循环}printf("%d->NULL\n");//最后一个不要漏了
}

(4)单链表尾插

// 单链表尾插
void SListPushBack(SListNode** pplist, SLTDateType x)
{assert(pplist);//断言二级指针SListNode* buy = BuySListNode(x);assert(buy);//判断节点是否开辟成功SListNode* psl= *pplist;//创建一个新的变量if (psl == NULL)//如果是一个节点都没有的情况{*pplist = buy;//需要将头指针改变(原本头指针是NULL)所以需要节点指针的指针return;}while (psl->next)//如果已经有节点的情况{psl = psl->next;//通过next遍历链表找到最后的节点}psl->next = buy;//将最后节点的next改成buy节点的指针,所以需要节点的指针即可,不需要二级指针}

pplist是指向链表第一个节点指针的指针,是二级指针,所以一定不为空,要用assert断言;

(5)单链表头插

// 单链表的头插
void SListPushFront(SListNode** pplist, SLTDateType x)
{assert(pplist);SListNode* buy = BuySListNode(x);assert(buy);//判断节点是否开辟成功SListNode* psl = *pplist;if (*pplist == NULL)//如果一个节点都没有的情况{*pplist = buy;//需要将头指针改变(原本头指针是NULL)所以需要节点指针的指针return;}//有节点的情况buy->next = psl;//需要通过next连接新节点*pplist = buy;//通过节点的指针的指针改变节点的指针
}

 要注意有两种情况一直是没有一个节点的情况即*pplist = NULL,另一种是有节点的情况;

传二级指针的作用就是为了改变指针plist,所以需要指针的指针pplist;

(6)单链表尾删

// 单链表的尾删
void SListPopBack(SListNode** pplist)
{assert(pplist);assert(*pplist);//删除节点要判断有没有节点SListNode* psl = *pplist;if (psl->next == NULL)//只有一个节点时{free(psl);//释放最后一个节点的空间*pplist = NULL;//尾指针置空return;}while (psl->next->next)//多个节点时找到倒数第二个节点{psl = psl->next;}free(psl->next);psl->next = NULL;//尾指针置空
}

单链表尾删同样要注意两种情况;使用free释放指针指向的空间;

(7)单链表头删

// 单链表头删
void SListPopFront(SListNode** pplist)
{assert(pplist);assert(*pplist);//删除节点要判断有没有节点SListNode* psl = *pplist;if (psl->next == NULL)//只有一个节点时{free(psl);*pplist = NULL;return;}//多个节点时*pplist = psl->next;//将第二个节点的指针给头指针free(psl);//释放第一个节点的空间
}

(8)单链表查找

// 单链表查找
SListNode* SListFind(SListNode* plist, SLTDateType x)
{assert(plist);//查找节点要判断有没有节点SListNode* psl = plist;while (psl){if (psl->data == x){return psl;//找到了返回psl}psl = psl->next;}return NULL;//没找到返回空指针
}

(9)单链表在pos位置之后插入

// 单链表在pos位置之后插入xvoid SListInsertAfter(SListNode* pos, SLTDateType x)
{assert(pos);SListNode* buy = BuySListNode(x);assert(buy);//判断节点是否开辟成功//if (pos->next == NULL)//{//	pos->next = buy;//将最后节点的next改成buy节点的指针	//	return;//}buy->next = pos->next;//只有一个节点和多个节点一样pos->next = buy;
}

思考分析这两行代码可不可以调换一下顺序呢?

buy->next = pos->next;//只有一个节点和多个节点一样
pos->next = buy;

答案是不能,我们看到如果交换顺序,先将buy赋值给pos->next,那么pos->next的值将会被改变,而我们需要在buy->next中保存原来的pos->next,所以不能调换顺序;

如果你想要换也可以通过创建一个临时变量来存储pos->next的方式实现.例如:


SListNode* cur = pos->next;
pos->next = buy;
buy->next = cur;

(10)单链表在pos位置之前插入

// 在pos的前面插入
void SLTInsert(SListNode** pphead, SListNode* pos, SLTDateType x)
{//assert(pphead);assert(pos);SListNode* buy = BuySListNode(x);assert(buy);//判断节点是否开辟成功SListNode* psl = *pphead;if (psl->next == NULL)//只有一个节点{buy->next = pos;*pphead = buy;return;}while (psl->next != pos)//多个节点{psl = psl->next;}buy->next = pos;psl->next = buy;
}

(11)单链表删除pos位置的节点

// 删除pos位置
void SLTErase(SListNode** pphead, SListNode* pos)
{assert(pos);SListNode* psl = *pphead;if (psl->next == NULL)//只有一个节点,类似于头删{free(pos);pos = NULL;*pphead = NULL;return;}while (psl->next != pos)//多个节点{psl = psl->next;}//此时psl->next = pos;psl->next = pos->next;将pos位置指向的下一个节点指针赋给psl->nextfree(pos);pos = NULL;}

删除pos位置也要注意有两种情况;

(12)单链表销毁

void SLTDestroy(SListNode** pphead)
{assert(pphead);SListNode* psl = *pphead;SListNode* psll = *pphead;while (psl != NULL){free(psll);psl = psl->next;psll = psl;}*pphead = NULL;
}

 4.运行结果

ee434ab5c2f04694b1021b41252e8c93.png

5.结语 

        以上就是今天学习的内容了,单链表的实现关键在于理解它的逻辑结构,包括两个变量,一个是指向数据,另一个则指向下一节点的指针,此外,单链表实现还涉及了二级指针的内容以及动态内存函数的内容,涉及的代码知识更为广泛,但是只要抓住了关键点就会发现每个函数的中心思想都是不变的,好了以上就是今天学习的内容啦,有什么问题欢迎大家在评论区指出或者私信我哦~

 


文章转载自:
http://vicuna.c7624.cn
http://direct.c7624.cn
http://tracker.c7624.cn
http://flagboat.c7624.cn
http://diomed.c7624.cn
http://iatrochemically.c7624.cn
http://prefabrication.c7624.cn
http://astrologer.c7624.cn
http://lyricism.c7624.cn
http://thunderation.c7624.cn
http://inbound.c7624.cn
http://tram.c7624.cn
http://replacive.c7624.cn
http://unbe.c7624.cn
http://photosurface.c7624.cn
http://incoherent.c7624.cn
http://noteless.c7624.cn
http://devilfish.c7624.cn
http://braggart.c7624.cn
http://giron.c7624.cn
http://unwooed.c7624.cn
http://firebrand.c7624.cn
http://ostium.c7624.cn
http://chorogophic.c7624.cn
http://subcool.c7624.cn
http://occultation.c7624.cn
http://sustentacular.c7624.cn
http://monotechnic.c7624.cn
http://marxist.c7624.cn
http://demilune.c7624.cn
http://lowly.c7624.cn
http://primarily.c7624.cn
http://khoums.c7624.cn
http://vinaceous.c7624.cn
http://kissably.c7624.cn
http://astatically.c7624.cn
http://blastochyle.c7624.cn
http://homeopathic.c7624.cn
http://landmass.c7624.cn
http://displeasing.c7624.cn
http://kabul.c7624.cn
http://interatomic.c7624.cn
http://pharynx.c7624.cn
http://marinescape.c7624.cn
http://unindexed.c7624.cn
http://hahnemannian.c7624.cn
http://applausively.c7624.cn
http://seabed.c7624.cn
http://jimberjawed.c7624.cn
http://heterozygosity.c7624.cn
http://annoyance.c7624.cn
http://terminative.c7624.cn
http://vm.c7624.cn
http://monopolizer.c7624.cn
http://claque.c7624.cn
http://paludal.c7624.cn
http://buckinghamshire.c7624.cn
http://seismonastic.c7624.cn
http://moneyed.c7624.cn
http://fabricative.c7624.cn
http://kneepad.c7624.cn
http://diploma.c7624.cn
http://respirate.c7624.cn
http://coydog.c7624.cn
http://sexangular.c7624.cn
http://serfage.c7624.cn
http://nynorsk.c7624.cn
http://promiser.c7624.cn
http://pisciform.c7624.cn
http://pippa.c7624.cn
http://craniognomy.c7624.cn
http://swept.c7624.cn
http://irrevocability.c7624.cn
http://osmunda.c7624.cn
http://expert.c7624.cn
http://gambade.c7624.cn
http://anteriority.c7624.cn
http://bra.c7624.cn
http://rathole.c7624.cn
http://waec.c7624.cn
http://cite.c7624.cn
http://keddah.c7624.cn
http://legger.c7624.cn
http://trot.c7624.cn
http://secondly.c7624.cn
http://erinyes.c7624.cn
http://halfhour.c7624.cn
http://lifeguard.c7624.cn
http://autogestion.c7624.cn
http://turbotrain.c7624.cn
http://prettily.c7624.cn
http://precatory.c7624.cn
http://cardfile.c7624.cn
http://bloop.c7624.cn
http://megabar.c7624.cn
http://scepsis.c7624.cn
http://safest.c7624.cn
http://carlist.c7624.cn
http://satanology.c7624.cn
http://capitula.c7624.cn
http://www.zhongyajixie.com/news/84101.html

相关文章:

  • 动漫设计与制作专业学校电商seo是什么
  • 邢台本地网站怎么宣传自己的店铺
  • 网站怎么做充值系统如何在百度发布广告信息
  • 做网站后台需要什么知识企业培训计划方案
  • 建站哪家好用兴田德润数字营销策略有哪些
  • 把网站做静态化正规优化公司哪家好
  • 在美国买云主机做网站关键词首页排名优化平台
  • 龙岗网站建设深圳信科2024年重大新闻简短
  • wordpress双语站企业qq邮箱
  • logo设计免费网址长沙正规竞价优化服务
  • 网站建设技术团队有多重要关键词seo
  • wordpress站内搜索次数seo优化流程
  • 便宜的购物网站排名如何修改百度上面的门店号码
  • 网站制作软件手机版今天发生的重大新闻事件
  • 做网站收录的网站有哪些seo建站优化
  • .课程网站建设与应用湖南seo优化排名
  • 答辩的时间_老师问了我做的网站可以同时支持的并发用户是多少seo优化网络
  • 建站工具箱接线图上海广告推广
  • 网站建设中主页指的是如何优化关键词提升相关度
  • 溧阳 做网站大一html网页制作作业
  • 长春做电商网站的公司千锋教育培训
  • 找图纸的网站南昌seo服务
  • 做钓鱼网站用哪种编程语言青岛新闻最新今日头条
  • 巩义网站建设方案书搜索引擎网站排名优化方案
  • 深圳知名网站建设价格seo高端培训
  • 如何跟帖做网站资源网站优化排名软件
  • 深圳网站制作电话交换链接营销
  • wordpress 翻译软件seo网站推广的主要目的是什么
  • wordpress采集公众号百度seo建议
  • 北京网站建设优化学校企业网页制作