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

公司建设网站需要什么武汉seo公司

公司建设网站需要什么,武汉seo公司,无货源电商选品软件,wordpress用户中心UC“希望就像星星,或许光芒微弱,但永不熄灭。” 博主的个人gitee:https://gitee.com/friend-a188881041351 一.概念与结构 链表是一种物理存储上非连续、非顺序的存储结构,数据元素的顺序逻辑是通过链表中的指针链接次序实现的。 单…

“希望就像星星,或许光芒微弱,但永不熄灭。”

博主的个人gitee:https://gitee.com/friend-a188881041351


一.概念与结构

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

单链表由一系列节点组成,每个节点包含两部分:

  1. 数据部分:存储实际的数据。

  2. 指针部分:存储指向下一个节点的指针。

单链表的特点是:

  • 每个节点通过指针连接到下一个节点。

  • 除了最后一个节点外,每个节点都有一个后继节点。

  • 单链表的头节点(头指针)是链表的入口。

二.单链表的定义

1.链表的组成

链表是由节点构成的。链表中每个结点都是独立申请的(即需要插入数据时才去申请⼀块结点的空间),我们需要通过指针变量来保存下⼀个结点位置才能从当前结点找到下⼀个结点。

2.链表的性质

  • 链式机构在逻辑上是连续的,在物理结构上不⼀定连续。
  • 结点⼀般是从堆上申请的。
  • 从堆上申请来的空间,是按照⼀定策略分配出来的,每次申请的空间可能连续,可能不连续。

3.单链表的定义

typedef int SLTDataType;
typedef struct SListNode 
{SLTDataType data;struct SListNode* next;//指向下一个结点的指针
}SLTNode;

当我们想要保存⼀个整型数据时,实际是向操作系统申请了一块内存,这个内存不仅要保存整型数 据,也需要保存下一个结点的地址(当下⼀个结点为空时保存的地址为空)。

当我们想要从第⼀个结点走到最后⼀个结点时,只需要在当前结点拿上下一个结点的地址就可以了。

三.单链表的操作(增、删、查、改)

先在"List.h"中:

//phead:头(首)结点
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);

先写前置函数方便接下来的代码编写:

//向操作系统申请一个新节点
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;
}

1.单链表插入元素

a.头插

void SLTPushFront(SLTNode** pphead, SLTDataType x)
{assert(pphead);SLTNode* newnode = SLTBuyNode(x);newnode->next = *pphead;*pphead = newnode;
}

b.尾插

void SLTPushBack(SLTNode** pphead, SLTDataType x)
{assert(pphead);SLTNode* newnode = SLTBuyNode(x);//链表为空,phead直接指向newnode结点if (*pphead == NULL){*pphead = newnode;}else {   //链表不为空,找尾结点,将尾结点和新节点连接起来SLTNode* ptail = *pphead;while (ptail->next)//等价于ptail->next != NULL{ptail = ptail->next;}ptail->next = newnode;}
}

c.在指定位置之前插入数据

void SLTInsert(SLTNode** pphead, SLTNode* pos, SLTDataType x)
{assert(pphead && pos);//pos就是头结点if (pos == *pphead){//头插SLTPushFront(pphead, x);}else {SLTNode* newnode = SLTBuyNode(x);//pos在头结点之后--->找pos前驱节点SLTNode* prev = *pphead;while (prev->next != pos){prev = prev->next;}//prev newnode  posnewnode->next = pos;prev->next = newnode;}
}

d.在指定位置之后插入数据

void SLTInsertAfter(SLTNode* pos, SLTDataType x)
{assert(pos);SLTNode* newnode = SLTBuyNode(x);newnode->next = pos->next;pos->next = newnode;
}

2.单链表删除元素

a.尾删

void SLTPopBack(SLTNode** pphead)
{assert(pphead && *pphead);//只有一个结点的情况if ((*pphead)->next == NULL){free(*pphead);*pphead = NULL;}else {SLTNode* prev = NULL;SLTNode* ptail = *pphead;while (ptail->next){prev = ptail;ptail = ptail->next;}//prev ptailprev->next = NULL;free(ptail);ptail = NULL;}
}

b.头删

void SLTPopFront(SLTNode** pphead)
{assert(pphead && *pphead);SLTNode* next = (*pphead)->next;free(*pphead);*pphead = next;
}

c.删除指定位置的数据

void SLTErase(SLTNode** pphead, SLTNode* pos)
{assert(pphead && pos);//要删除的结点刚好就是头结点---头删if (pos == *pphead){SLTPopFront(pphead);}else {//prevSLTNode* prev = *pphead;while (prev->next != pos){prev = prev->next;}//prev pos pos->nextprev->next = pos->next;free(pos);pos = NULL;}
}

d.删除指定位置之后的数据

void SLTEraseAfter(SLTNode* pos)
{assert(pos && pos->next);SLTNode* del = pos->next;pos->next = del->next;free(del);del = NULL;
}

3.单链表查找元素

SLTNode* SLTFind(SLTNode* phead, SLTDataType x)
{SLTNode* pcur = phead;while (pcur){if (pcur->data == x){return pcur;}pcur = pcur->next;}//未找到return NULL;
}

4.链表的销毁

void SListDestroy(SLTNode** pphead)
{assert(pphead);SLTNode* pcur = *pphead;while (pcur){SLTNode* next = pcur->next;free(pcur);pcur = next;}*pphead = NULL;
}

如有错误,恳请指正.

 

http://www.dtcms.com/wzjs/15384.html

相关文章:

  • 移动互联网开发考研方向seo手机关键词排行推广
  • 百度知识营销百度seo价格查询
  • 网站建设仟首先金手指12精品成品网站入口
  • 怀仁有做网站的公司吗千锋教育介绍
  • 免费网站建设开发网络营销策划方案的目的
  • 为什么做网站要服务器 和域名seo是什么工作
  • 专做logo网站叫什么地方子域名大全查询
  • 网络推广工作好干吗专业seo网络营销公司
  • 下载大连建设网官方网站百度推广官网
  • 免费网站软件app如何在百度上建立网站
  • 中纪委网站两学一做征文百度安全中心
  • 上海市住房和城乡建设部网站电脑培训班价目表
  • 做网站排行个人博客网页设计
  • 宁夏商擎网站建设晋中网络推广
  • 绞铜机 东莞网站建设seo优化收费
  • 百度网盘资源搜索入口杭州seo代理公司
  • 郑州企业建设网站有什么用关键词优化怎么优化
  • 做ppt的素材网站免费网站安全软件大全游戏
  • 自适应网站怎么做推广工具
  • 备案 网站负责人 法人百度竞价登录
  • ps做网站的分辨率多少百度智能建站平台
  • 专门做童装的网站有哪些哪里有软件培训班
  • 网站的领券商城怎么做app推广公司
  • 网站开发与网站建设软广告经典案例
  • 菜单宣传网站怎么做成都网络推广运营公司
  • 怎么在网站做系统合肥百度关键词排名
  • 最便宜建站本站3天更换一次域名yw
  • 高端品牌网站建设公司互联网营销具体做什么
  • 公司网站建设后期维护网络推广教程
  • 国家住房部和城乡建设部 网站最有创意的广告语30条