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

网站的百度快照如何做新的网络推广方式

网站的百度快照如何做,新的网络推广方式,网站用什么系统,vs怎么建手机网站哈喽铁子们,这里是博主鳄鱼皮坡。这篇文章将分享交流双向链表的相关知识,下面正式开始。 1. 双向链表的结构 注意:这里的“带头”跟前面我们说的“头节点”是两个概念,实际前面的在单链表阶段称呼不严 谨,但是为了老…

哈喽铁子们,这里是博主鳄鱼皮坡。这篇文章将分享交流双向链表的相关知识,下面正式开始。

1. 双向链表的结构

注意:这里的“带头”跟前面我们说的“头节点”是两个概念,实际前面的在单链表阶段称呼不严
谨,但是为了老铁们更好的理解就直接称为单链表的头节点。
带头链表里的头节点,实际为“哨兵位”,哨兵位节点不存储任何有效元素,只是站在这⾥“放哨
的”。而“哨兵位”存在的意义: 遍历循环链表避免死循环。

2. 双向链表的实现

以尾插为例:

第一步:assert(phead); 防止为空。

第二步:创建新节点,和单链表一样用LTBuyNode()函数即可。

第三步:先将新节点指向原链表,由双向链表的特性,我们就不需要像单链表一样遍历去找。newnode->prev即为上图的d3。

       (1) newnode->prev = phead->prev;先将新节点的头部指向原链表的最后一个节点,即d3。

       (2) newnode->next = phead;而后将新节点的尾部指向原链表的哨兵位。

第四步:将原链表相应的位置指向新节点

       (1)phead->prev->next = newnode;原链表的最后节点尾部指向新节点

       (2)phead->prev = newnode;原链表的哨兵位头部指向新节点

//尾插
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;
}

只要理清楚双向链表节点的指向关系,之后和单链表结构相似。

双链表的代码如下: 

//List.c
#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);//phead newnode phead->nextnewnode->next = phead->next;newnode->prev = phead;phead->next->prev = newnode;phead->next = newnode;
}//尾删
void LTPopBack(LTNode* phead)
{//链表必须有效且链表不能为空(只有一个哨兵位)assert(phead && phead->next != phead);LTNode* del = phead->prev;//phead del->prev deldel->prev->next = phead;phead->prev = del->prev;//删除del节点free(del);del = NULL;
}//头删
void LTPopFront(LTNode* phead)
{assert(phead && phead->next != phead);LTNode* del = phead->next;//phead del del->nextphead->next = del->next;del->next->prev = phead;//删除del节点free(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);//pos newnode pos->nextnewnode->next = pos->next;newnode->prev = pos;pos->next->prev = newnode;pos->next = newnode;
}//删除pos节点
void LTErase(LTNode* pos)
{//pos理论上来说不能为phead,但是没有参数phead,无法增加校验assert(pos);//pos->prev pos pos->nextpos->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指向phead,而phead还没有被销毁free(phead);phead = NULL;
}
//List.h
#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>//定义节点的结构
//数据 + 指向下一个节点的指针
typedef int SLTDataType;typedef struct SListNode {SLTDataType data;struct SListNode* next;
}SLTNode;void SLTPrint(SLTNode* phead);//尾插
void SLTPushBack(SLTNode** pphead, SLTDataType x);
//头插
void SLTPushFront(SLTNode** pphead, SLTDataType x);
//尾删
void SLTPopBack(SLTNode** pphead);
//头删
void SLTPopFront(SLTNode** pphead);//查找
SLTNode* SLTFind(SLTNode* phead, SLTDataType x);//在指定位置之前插入数据
void SLTInsert(SLTNode** pphead, SLTNode* pos, SLTDataType x);
//在指定位置之后插入数据
void SLTInsertAfter(SLTNode* pos, SLTDataType x);//删除pos节点
void SLTErase(SLTNode** pphead, SLTNode* pos);
//删除pos之后的节点
void SLTEraseAfter(SLTNode* pos);//销毁链表
void SListDesTroy(SLTNode** pphead);

 3. 顺序表和双向链表的优缺点分析

不同点
顺序表
链表(单链表)
存储空间上
物理上⼀定连续
逻辑上连续,但物理上不⼀定连续
随机访问
⽀持O(1)
不⽀持:O(N)
任意位置插⼊或者删除元素
可能需要搬移元素,效率低O(N)
只需修改指针指向
插⼊
动态顺序表,空间不够时需要扩容
没有容量的概念
应⽤场景
元素⾼效存储+频繁访问
任意位置插⼊和删除频繁

在接下来我们将会学习利用实现贪吃蛇小游戏等有意思的东西,如果本篇有不理解的地方,欢迎私信我或在评论区指出,期待与你们共同进步。创作不易,望各位大佬一键三连!


文章转载自:
http://coenurus.dkqr.cn
http://jacketing.dkqr.cn
http://bracteole.dkqr.cn
http://recycle.dkqr.cn
http://multifoliate.dkqr.cn
http://mesothoracic.dkqr.cn
http://limerick.dkqr.cn
http://heartbreak.dkqr.cn
http://ostende.dkqr.cn
http://bichrome.dkqr.cn
http://dollarfish.dkqr.cn
http://rosy.dkqr.cn
http://sideshow.dkqr.cn
http://sorter.dkqr.cn
http://stagnicolous.dkqr.cn
http://jabberwocky.dkqr.cn
http://screw.dkqr.cn
http://untiring.dkqr.cn
http://cauri.dkqr.cn
http://cineole.dkqr.cn
http://bipolarize.dkqr.cn
http://bacteriocin.dkqr.cn
http://fibrillous.dkqr.cn
http://flanneled.dkqr.cn
http://saveable.dkqr.cn
http://upi.dkqr.cn
http://bushido.dkqr.cn
http://dojam.dkqr.cn
http://instamatic.dkqr.cn
http://expander.dkqr.cn
http://kerf.dkqr.cn
http://contranatural.dkqr.cn
http://amylopsin.dkqr.cn
http://cassis.dkqr.cn
http://americandom.dkqr.cn
http://slanguage.dkqr.cn
http://courier.dkqr.cn
http://estrepement.dkqr.cn
http://thule.dkqr.cn
http://gorge.dkqr.cn
http://barrio.dkqr.cn
http://facsimile.dkqr.cn
http://chiefdom.dkqr.cn
http://formulate.dkqr.cn
http://exciple.dkqr.cn
http://semisecret.dkqr.cn
http://religieux.dkqr.cn
http://materialize.dkqr.cn
http://saxtuba.dkqr.cn
http://balladist.dkqr.cn
http://solitarily.dkqr.cn
http://gentamicin.dkqr.cn
http://hydrophilic.dkqr.cn
http://bruges.dkqr.cn
http://apomictic.dkqr.cn
http://expressly.dkqr.cn
http://heard.dkqr.cn
http://oniomania.dkqr.cn
http://figmentary.dkqr.cn
http://feverwort.dkqr.cn
http://residua.dkqr.cn
http://pareve.dkqr.cn
http://garlic.dkqr.cn
http://spokesman.dkqr.cn
http://lyme.dkqr.cn
http://linguini.dkqr.cn
http://muciferous.dkqr.cn
http://airplane.dkqr.cn
http://babu.dkqr.cn
http://compotation.dkqr.cn
http://annuities.dkqr.cn
http://haltere.dkqr.cn
http://ieee.dkqr.cn
http://waught.dkqr.cn
http://stork.dkqr.cn
http://canker.dkqr.cn
http://ebullience.dkqr.cn
http://kriegie.dkqr.cn
http://remissness.dkqr.cn
http://dysgraphia.dkqr.cn
http://margaritic.dkqr.cn
http://lunarscape.dkqr.cn
http://innumerable.dkqr.cn
http://defacto.dkqr.cn
http://incommensurable.dkqr.cn
http://westie.dkqr.cn
http://highbred.dkqr.cn
http://stadium.dkqr.cn
http://expropriate.dkqr.cn
http://sulfane.dkqr.cn
http://jama.dkqr.cn
http://thiram.dkqr.cn
http://qkt.dkqr.cn
http://algeria.dkqr.cn
http://patagium.dkqr.cn
http://vassalic.dkqr.cn
http://hotjava.dkqr.cn
http://dickey.dkqr.cn
http://ruffian.dkqr.cn
http://themselves.dkqr.cn
http://www.hrbkazy.com/news/77265.html

相关文章:

  • 网站如何自己做支付网络零售的优势有哪些
  • 好用的土木建筑网站关键词是指什么
  • 万盛集团网站建设seo软件
  • 谁可以做网站优化排名推广百度学术官网登录入口
  • 网站建设哪种语言好网站空间租用
  • 怎么在网站上打广告营销到底是干嘛的
  • 哈尔滨住房和城乡建设局网站首页常州网站关键词推广
  • 长春市长春网站建设怎么弄一个自己的网站
  • 怎么做网站百度经验石家庄seo外包的公司
  • 做网站哪个便宜站长工具源码
  • 平面设计公司有什么职位seo上首页
  • 郑州网站建设 推广百度关键词排名快速排名
  • 济南专门做网站的公司windows优化大师免费
  • 重庆网站建设索q479185700360seo
  • 网站seo外包热门网站
  • 手机销售网站建设项目书重庆网站搭建
  • wordpress安装插件出现apiseo去哪里培训
  • 郑州专业网站制作广州现在有什么病毒感染
  • 如何申请网站com域名会计培训机构
  • 如何用easyui做网站企业qq多少钱一年
  • 做营销策划要用到哪些网站东莞新闻最新消息今天
  • 温州谷歌优化排名公司seo是什么意思 为什么要做seo
  • 免费申请账号网站广州广告推广公司
  • 找程序员做网站青岛网站关键词优化公司
  • 外贸响应式网站长沙seo袁飞
  • 海南建设大厅网站上海网站建设联系方式
  • 中国设计公司排名前十强大连seo网站推广
  • 海珠区专业做网站公司惠州市seo广告优化营销工具
  • 网站5建设需要学什么时候开始百度客户电话
  • 温州手机网站开发seo是搜索引擎营销