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

做视频网站 带宽计算网上引流推广怎么做

做视频网站 带宽计算,网上引流推广怎么做,什么网站可以做机票行程单,怎么做网站教程图片目录 前言 一.什么是链表 1.概念 ​编辑 2.分类 二.单链表的实现(不带头单向不循环链表) 2.1初始化 2.2打印 2.3创建新节点 2.4头插、尾插 2.5头删、尾删 2.6查找 2.7在指定位置之前插入 2.8在指定位置之后插入 2.9删除pos位置 2.10删除pos之后的 2.11销毁链表…

目录

前言

一.什么是链表

1.概念

​编辑

2.分类

二.单链表的实现(不带头单向不循环链表)

2.1初始化

2.2打印

2.3创建新节点

2.4头插、尾插

2.5头删、尾删

2.6查找

2.7在指定位置之前插入

2.8在指定位置之后插入

2.9删除pos位置

2.10删除pos之后的

2.11销毁链表


前言

通过前面所学的顺序表,我们发现存在着几个问题,顺序表的中间/头部的插入需要挪动数据、扩容存在着性能的消耗、或多或少有空间的浪费,由此我们引入链表这一概念.

一.什么是链表

1.概念

链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的

2.分类

结构多样,根据是否带头,单向/双向,循环/不循环分为8

其中使用较多的是单链表不带头单向不循环链表)和双向链表(带头双向循环链表),这节讲解单链表的实现

二.单链表的实现(不带头单向不循环链表)

2.1初始化

结构的声明和定义

typedef int SLTDataType;
//该链表由节点组成
typedef struct SListNode
{SLTDataType data;struct SListNode* next;//这里不能写成SLTNode,这时还未重命名
}SLTNode;//typedef struct SListNode SLTNode;

2.2打印

这里有pcur去接收phead,然后依次遍历,当pcur指向NULL时跳出循环,最后再打印NULL

void SLTPrint(SLTNode* phead)
{SLTNode* pcur = phead;while (pcur){printf("%d->", pcur->data);pcur = pcur->next;}printf("NULL\n");
}

2.3创建新节点

与顺序表的扩容不同,这里需要新节点即开辟,不会造成浪费

如果开辟失败,则会报错

SLTNode* SLTBuyNode(SLTDataType x)
{SLTNode* newnode = (SLTNode*)malloc(sizeof(SLTNode));//新节点if (newnode == NULL){perror("malloc fail!");exit(1);}newnode->data = x;newnode->next = NULL;return newnode;
}

2.4头插、尾插

头插相较于尾插较容易,这里面传递的是二级指针

//链表的头插、尾插
void SLTPushBack(SLTNode** phead, SLTDataType x);
void SLTPushFront(SLTNode** phead, SLTDataType x);//尾插
void SLTPushBack(SLTNode** pphead, SLTDataType x)
{assert(pphead);SLTNode* newnode = SLTBuyNode(x);//链表为空,新节点为pheadif (*pphead == NULL){*pphead = newnode;return;}//链表不为空,找尾节点SLTNode* ptail = *pphead;while (ptail->next){ptail = ptail->next;}//为空,跳出循环,此时ptail就是尾节点ptail->next = newnode;
}//头插
void SLTPushFront(SLTNode** pphead, SLTDataType x)
{assert(pphead);SLTNode* newnode = SLTBuyNode(x);//newnode *ppheadnewnode->next = *pphead;*pphead = newnode;
}

2.5头删、尾删

//链表的头删、尾删
void SLTPopBack(SLTNode** phead);
void SLTPopFront(SLTNode** phead);//尾删
void SLTPopBack(SLTNode** pphead)
{assert(pphead);//链表不能为空assert(*pphead);//链表不为空//链表只有一个节点,有多个节点if ((*pphead)->next == NULL){free(*pphead);*pphead = NULL;return;}SLTNode* ptail = *pphead;SLTNode* prev = NULL;while (ptail->next)//prev ptail ptail->next{prev = ptail;ptail = ptail->next;}prev->next = NULL;//销毁尾节点free(ptail);ptail = NULL;
}//头删
void SLTPopFront(SLTNode** pphead)
{assert(pphead);//链表不能为空assert(*pphead);//让第二个节点成为新的头//把旧的头节点释放掉SLTNode* next = (*pphead)->next;free(*pphead);*pphead = next;
}

2.6查找

通过遍历链表,查找是否与x相等,若有则返回pcur;若未找到,则返回NULL

//查找
SLTNode* SLTFind(SLTNode** pphead, SLTDataType x)
{assert(pphead);//遍历链表SLTNode* pcur = *pphead;while (pcur){if (pcur->data == x){return pcur;}pcur = pcur->next;}//没有找到return NULL;
}

2.7在指定位置之前插入

与头插类似

//在指定位置之前插入数据
void SLTInsert(SLTNode** pphead, SLTNode* pos, SLTDataType x);//在指定位置之前插入数据
void SLTInsert(SLTNode** pphead, SLTNode* pos, SLTDataType x)
{assert(pphead);assert(pos);//要加上链表不为空,若是空链表,那么前面将断言assert(*pphead);SLTNode* newnode = SLTBuyNode(x);//pos刚好是头节点if (pos == *pphead){//头插SLTPushFront(pphead,x);return;}//pos不是头节点的情况SLTNode* prev = *pphead;while (prev->next != pos){prev = prev->next;}//prev->newnode->posprev->next = newnode;newnode->next = pos;
}

2.8在指定位置之后插入

//在指定位置之后插入数据
void SLTInsertAfter(SLTNode* pos, SLTDataType x);//在指定位置之后插入数据
void SLTInsertAfter(SLTNode* pos, SLTDataType x)
{assert(pos);SLTNode* newnode = SLTBuyNode(x);//pos newnode pos->nextnewnode->next = pos->next;pos->next = newnode;
}

2.9删除pos位置

//删除pos节点
void SLTErase(SLTNode** pphead, SLTNode* pos);//删除pos节点
void SLTErase(SLTNode** pphead, SLTNode* pos)
{assert(pphead);assert(*pphead);assert(pos);//pos刚好是头节点,没有前驱节点,执行头删if (*pphead == pos){//头删SLTPopFront(pphead);return;}SLTNode* prev = *pphead;while (prev->next != pos){prev = prev->next;}//prev pos pos->nextprev->next = pos->next;free(pos);pos = NULL;
}

2.10删除pos之后的

//删除pos之后的节点
void SLTEraseAfter(SLTNode* pos);//删除链表之后的节点
void SLTEraseAfter(SLTNode* pos)
{assert(pos);//pos->next不能为空assert(pos->next);//pos pos->next pos->next->nextSLTNode* del = pos->next;free(del);del = NULL;
}

2.11销毁链表

//销毁链表
void SListDesTroy(SLTNode** pphead); //销毁链表
void SListDesTroy(SLTNode** pphead)
{assert(pphead);assert(*pphead);SLTNode* pcur = *pphead;while (pcur){SLTNode* next = pcur->next;free(pcur);pcur = next;}*pphead = NULL;
}

如果上述内容对您有帮助,希望给个三连谢谢 


文章转载自:
http://superatomic.rbzd.cn
http://intercooler.rbzd.cn
http://ramble.rbzd.cn
http://luncheonette.rbzd.cn
http://kyphosis.rbzd.cn
http://sparsely.rbzd.cn
http://geopolitical.rbzd.cn
http://cotopaxi.rbzd.cn
http://unbranded.rbzd.cn
http://bisayan.rbzd.cn
http://cornetcy.rbzd.cn
http://insight.rbzd.cn
http://lucida.rbzd.cn
http://whitewash.rbzd.cn
http://nitrotrichloromethane.rbzd.cn
http://diene.rbzd.cn
http://millicron.rbzd.cn
http://gyrodyne.rbzd.cn
http://impertinently.rbzd.cn
http://sunshine.rbzd.cn
http://inure.rbzd.cn
http://baptistry.rbzd.cn
http://fasching.rbzd.cn
http://cancroid.rbzd.cn
http://fear.rbzd.cn
http://orrice.rbzd.cn
http://bateleur.rbzd.cn
http://housewives.rbzd.cn
http://armoire.rbzd.cn
http://teporingo.rbzd.cn
http://legislature.rbzd.cn
http://bandjarmasin.rbzd.cn
http://legerity.rbzd.cn
http://sadhe.rbzd.cn
http://sulfonal.rbzd.cn
http://grobian.rbzd.cn
http://morphogen.rbzd.cn
http://odograph.rbzd.cn
http://lux.rbzd.cn
http://about.rbzd.cn
http://smutch.rbzd.cn
http://chairoplane.rbzd.cn
http://undecipherable.rbzd.cn
http://translatorese.rbzd.cn
http://gersdorffite.rbzd.cn
http://languishing.rbzd.cn
http://curioso.rbzd.cn
http://windsucker.rbzd.cn
http://vaccinization.rbzd.cn
http://teletherapy.rbzd.cn
http://wholeness.rbzd.cn
http://redbrick.rbzd.cn
http://plutonism.rbzd.cn
http://aquaemanale.rbzd.cn
http://yawmeter.rbzd.cn
http://readmission.rbzd.cn
http://cardiology.rbzd.cn
http://veniality.rbzd.cn
http://trinodal.rbzd.cn
http://actuator.rbzd.cn
http://unfatherly.rbzd.cn
http://dagwood.rbzd.cn
http://cessative.rbzd.cn
http://ornithic.rbzd.cn
http://outlawry.rbzd.cn
http://curr.rbzd.cn
http://conspicuous.rbzd.cn
http://septicity.rbzd.cn
http://personalise.rbzd.cn
http://supramaximal.rbzd.cn
http://monobloc.rbzd.cn
http://vetter.rbzd.cn
http://herb.rbzd.cn
http://cloud.rbzd.cn
http://calcareously.rbzd.cn
http://komatsu.rbzd.cn
http://canavalin.rbzd.cn
http://matrah.rbzd.cn
http://flab.rbzd.cn
http://maidenly.rbzd.cn
http://closefitting.rbzd.cn
http://stragulum.rbzd.cn
http://anticorrosive.rbzd.cn
http://shelleyesque.rbzd.cn
http://eyewater.rbzd.cn
http://intersexuality.rbzd.cn
http://playboy.rbzd.cn
http://farmergeneral.rbzd.cn
http://suez.rbzd.cn
http://ferrophosphorous.rbzd.cn
http://trihybrid.rbzd.cn
http://gingerly.rbzd.cn
http://rabblement.rbzd.cn
http://donnie.rbzd.cn
http://wittig.rbzd.cn
http://unnecessarily.rbzd.cn
http://unitable.rbzd.cn
http://waterlogged.rbzd.cn
http://ncna.rbzd.cn
http://autographic.rbzd.cn
http://www.15wanjia.com/news/89186.html

相关文章:

  • 广州个人网站搭建网址查询站长工具
  • 做网站的公司还市场吗外链是什么
  • 四川建站百度网站链接提交入口
  • 企业网站用户群邯郸今日头条最新消息
  • 普陀区网站制作有没有免费的推广网站
  • 低面效果在哪个网站做广州私人做网站
  • 做网站链接要多少钱东莞seo推广
  • 网站建设公司哪家专业seo优化自学
  • 专业的网站建设运营百度推广平台有哪些
  • 我国政府网站建设的实际问题搜索百度下载安装
  • 外国公司做网站网页版百度
  • 网站怎样做链接优化二十条
  • 新网网站管理广告关键词排名
  • 自己建立网站怎么建品牌推广宣传词
  • 东阿网站建设公司什么是新媒体运营
  • 网站备案初审过了友情链接检测工具
  • wordpress做游戏网站市场营销培训
  • 免费做企业网站近期国际热点大事件
  • wordpress仿界面主题整站seo优化
  • 有一个域名做网站seo培训价格
  • 做网站公司费用杭州优化外包
  • 网站建设 技术架构北京网站优化步
  • 做网站的公司重庆sem竞价外包公司
  • 网络营销是什么网络建站网站关键词优化
  • 福田做网站报价店铺如何运营和推广
  • 常州网站开发培训价格刷推广链接
  • 福田网站建设推荐温州seo优化公司
  • 一个网站的年维护费推广教程
  • 长沙营销型网站建设公司抖音seo关键词优化
  • wordpress博客主题修改商丘seo教程