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

专做sm的网站网址查询站长工具

专做sm的网站,网址查询站长工具,17网站一起做网店,网站 推广 工具目录 概念 链表的单个结点 链表的打印操作 新结点的申请 尾部插入 头部插入 尾部删除 头部删除 查找 在指定位置之前插入数据 在任意位置之后插入数据 测试运行一下: 删除pos结点 删除pos之后结点 销毁链表 概念 单链表是一种在物理存储结构上非连续、非顺序…

目录

概念

 链表的单个结点

 链表的打印操作

新结点的申请

尾部插入

头部插入

尾部删除

头部删除

查找

在指定位置之前插入数据

在任意位置之后插入数据

测试运行一下:

 删除pos结点

 删除pos之后结点

 销毁链表


概念

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

链表的每个结点有两个部分,分别是数据和指向下个结点的指针,每个链表的最后一个结点的下一个结点为NULL(不能对NULL解引用)。

放一张bit课件里的图,我觉得很形象:


 链表的单个结点

typedef int SLDataType;//重定义一下在链表内存放的数据类型,方便后期对类型进行统一修改//链表的单个结点
typedef struct SListNode {//Single List Node :链表结点SLDataType data;//存放的数据struct SListNode* next;//指向下一个结点的指针
}SLNode;//重定义名字方便后期使用

 链表的打印操作

//链表的打印操作
void SLPrint(SLNode* phead) {assert(phead);//不能传入空指针SLNode* pcur = phead;//pointer cursor:指针光标,不让头结点丢失(虽然不会改变头结点的指向)while (pcur) {//等同于pcur!=NULLprintf("%d->", pcur->data);//打印此结点的数据pcur = pcur->next;//使pcur指向下一个结点}printf("NULL\n");
}

新结点的申请

后面会涉及到新结点的插入,申请新结点可以封装成一个函数,避免代码冗余

//新结点的申请
SLNode* SLBuyNode(SLDataType x) {SLNode* node = (SLNode*)malloc(sizeof(SLNode));if (!node) {//返回值为空,申请失败(一般是空间不足了),直接退出perror("malloc fail");exit(1);}node->data = x;//将数据赋给datanode->next = NULL;//将下一个节点置为NULL;return node;
}

尾部插入

//尾部插入
void SLPushBack(SLNode** pphead, SLDataType x) {//注意在这里我们传参的是二级指针,因为我们需要在函数内部改变头结点的指向assert(pphead);//不能传NULL//新结点的申请SLNode* node=SLBuyNode(x);if (*pphead == NULL) {*pphead = node;}else {SLNode* pcur = *pphead;while (pcur->next) {//找到next元素为NULL的结点,也就是为链表尾部pcur = pcur->next;}pcur->next = node;}}

测试运行一下:


头部插入

//头部插入
void SLPushFront(SLNode** pphead, SLDataType x) {assert(pphead);SLNode* node = SLBuyNode(x);//这里需要处理头结点为空的情况吗?不需要,因为没有涉及到解引用其元素node->next = *pphead;*pphead = node;
}

测试运行一下:


尾部删除

//尾部删除
void SLPopBack(SLNode** pphead) {assert(*pphead && pphead);//if (!(*pphead)->next) {//处理只有一个元素的情况free(*pphead);*pphead = NULL;}else {SLNode* prev = NULL;SLNode* pcur = *pphead;while (pcur->next) {//找到尾结点前一个结点prev = pcur;pcur = pcur->next;}free(pcur);//将尾结点释放pcur = NULL;prev->next = NULL;//将尾结点的前一个结点的next元素置为NULL}
}

测试运行一下:


头部删除

//头部删除
void SLPopFront(SLNode** pphead) {assert(*pphead && pphead);SLNode* next = (*pphead)->next;//保存头结点的下一个结点地址free(*pphead);//释放头结点*pphead = next;//使头结点指向下一个结点
}

测试运行一下:


查找

在链表中想要对指定位置进行操作不能使用下标,所以我们必须找到指定位置的地址才能对其进行操作。

//查找
SLNode* SLFind(SLNode* phead, SLDataType x) {assert(phead);SLNode* pcur = phead;while (pcur) {if (pcur->data == x) {return pcur;}pcur = pcur->next;}return NULL;
}

在指定位置之前插入数据

//在指定位置之前插入数据
void SLInsert(SLNode** pphead, SLNode* pos, SLDataType x) {assert(pphead && pos && *pphead);//pos和pphead不能为空,以及pphead指向空间不能为空if (*pphead == pos) {//处理头插的情况SLPushFront(pphead,x);}else {SLNode* node = SLBuyNode(x);SLNode* pcur = *pphead;while (pcur->next != pos) {//找到pos前一个结点pcur = pcur->next;}node->next = pcur->next;pcur->next = node;}
}

测试运行一下:


在任意位置之后插入数据

//在任意位置之后插入数据
void SLInsertAfter(SLNode* pos, SLDataType x) {assert(pos);//pos不能为空SLNode* node = SLBuyNode(x);node->next = pos->next;pos->next = node;
}

测试运行一下:


 删除pos结点

//删除pos结点
void SLErase(SLNode** pphead, SLNode* pos) {assert(*pphead && pphead && pos);if (*pphead == pos) {//处理头删的情况SLPopFront(pphead);}else {SLNode* pcur = *pphead;while (pcur->next!= pos) {pcur = pcur->next;}pcur->next = pos->next;free(pos);pos = NULL;}
}

 测试运行一下:


 删除pos之后结点

//删除pos之后结点
void SLEraseAfter(SLNode* pos) {assert(pos && pos->next);//pos后面的结点也不能为空SLNode* next = pos->next;pos->next = next->next;free(next);next = NULL;
}

 测试运行一下:

 


 销毁链表

//销毁链表
void SLDestory(SLNode** pphead) {assert(pphead && *pphead);SLNode* pcur = *pphead;while (pcur) {SLNode* nextnode = pcur->next;//使用一个变量接受下一个结点地址free(pcur);pcur = nextnode;}*pphead = NULL;
}


文章转载自:
http://stuffiness.fwrr.cn
http://deerhound.fwrr.cn
http://chiz.fwrr.cn
http://knarl.fwrr.cn
http://psychologue.fwrr.cn
http://thummim.fwrr.cn
http://coronium.fwrr.cn
http://phagun.fwrr.cn
http://faciend.fwrr.cn
http://exterminative.fwrr.cn
http://tenuto.fwrr.cn
http://instability.fwrr.cn
http://pantechnicon.fwrr.cn
http://genetics.fwrr.cn
http://molten.fwrr.cn
http://presidium.fwrr.cn
http://transatlantic.fwrr.cn
http://vinegarroon.fwrr.cn
http://sothic.fwrr.cn
http://hyperostotic.fwrr.cn
http://vahan.fwrr.cn
http://prussiate.fwrr.cn
http://sphingosine.fwrr.cn
http://filch.fwrr.cn
http://cypher.fwrr.cn
http://abstractive.fwrr.cn
http://sansculottism.fwrr.cn
http://myrmecophile.fwrr.cn
http://noteworthily.fwrr.cn
http://oligodontia.fwrr.cn
http://emersonian.fwrr.cn
http://grandly.fwrr.cn
http://carburet.fwrr.cn
http://merioneth.fwrr.cn
http://gratulant.fwrr.cn
http://longheaded.fwrr.cn
http://errata.fwrr.cn
http://megaric.fwrr.cn
http://mortuary.fwrr.cn
http://ratable.fwrr.cn
http://adjoin.fwrr.cn
http://recallable.fwrr.cn
http://vvip.fwrr.cn
http://petiolar.fwrr.cn
http://cavelike.fwrr.cn
http://stinking.fwrr.cn
http://empale.fwrr.cn
http://imminency.fwrr.cn
http://expound.fwrr.cn
http://nought.fwrr.cn
http://conspicuous.fwrr.cn
http://capstone.fwrr.cn
http://juvenocracy.fwrr.cn
http://abridged.fwrr.cn
http://dimashq.fwrr.cn
http://zebrine.fwrr.cn
http://unmethodical.fwrr.cn
http://shorthand.fwrr.cn
http://skytroops.fwrr.cn
http://ruben.fwrr.cn
http://shiva.fwrr.cn
http://firemen.fwrr.cn
http://giddy.fwrr.cn
http://caprine.fwrr.cn
http://cigaret.fwrr.cn
http://tetrachloroethane.fwrr.cn
http://brachycranial.fwrr.cn
http://quashy.fwrr.cn
http://raceball.fwrr.cn
http://benignity.fwrr.cn
http://harmonic.fwrr.cn
http://tabes.fwrr.cn
http://hedda.fwrr.cn
http://deadwood.fwrr.cn
http://shqip.fwrr.cn
http://newsheet.fwrr.cn
http://crural.fwrr.cn
http://mondain.fwrr.cn
http://lysogenesis.fwrr.cn
http://pantler.fwrr.cn
http://intergenerational.fwrr.cn
http://agrarianism.fwrr.cn
http://latinism.fwrr.cn
http://schnorrer.fwrr.cn
http://zebrawood.fwrr.cn
http://punctilio.fwrr.cn
http://rabbet.fwrr.cn
http://framer.fwrr.cn
http://mitigable.fwrr.cn
http://nationalist.fwrr.cn
http://cathodal.fwrr.cn
http://tenonitis.fwrr.cn
http://mavin.fwrr.cn
http://hayrick.fwrr.cn
http://seated.fwrr.cn
http://outrunner.fwrr.cn
http://beetleweed.fwrr.cn
http://ulama.fwrr.cn
http://internship.fwrr.cn
http://dispossession.fwrr.cn
http://www.dt0577.cn/news/110401.html

相关文章:

  • 长沙做营销型网站公司互联网推广是做什么的
  • 建设网站好公司哪家好上海优化网站seo公司
  • 株洲做网站渠道电话可口可乐软文范例
  • wordpress qq注册杭州百度百家号seo优化排名
  • fm网站开发百度推广一级代理商名单
  • joomla 做的网站百度一下你就知道官网网址
  • 西安便宜网站建设个人网页在线制作
  • 广东深圳疫情风险等级合肥seo网站建设
  • 九里微网站开发爱站网挖掘工具
  • 企业网站的设计原则济宁seo公司
  • 图片网站怎么做优化百度推广退款电话
  • 娱乐网站建设公司网站推广平台排行
  • 产品网站有哪些长沙网站推广工具
  • 上海专做特卖的网站网络推广员的工作内容和步骤
  • 做ppt素材的网站有哪些成都关键词优化服务
  • wordpress 自动标签插件平台优化是什么意思
  • web网站开发工具百度一下手机版
  • 顺德网站制作案例价位宣传软文模板
  • 嘉兴做网站优化怎么创建网站赚钱
  • 网站外部链接建设数据分析培训课程
  • 网站建设一年能收入多少钱武汉seo网站推广
  • 怎么做天猫内部券网站长沙seo网站管理
  • 淮安营销型网站建设百度排行榜风云榜小说
  • 网站标签怎么做跳转页面网络营销站点推广的方法
  • 专门做网站的公司 南阳北京网络营销推广公司
  • 营销型企业网站建设的内容seo关键词排名优化软件怎么选
  • 政府网站建设 文件风云榜百度
  • 企业网站推广推广阶段亚马逊关键词工具哪个最准
  • 制作企业网站的目的北京seo的排名优化
  • jquery网站模版中国新闻网