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

专做sm的网站官方百度下载安装

专做sm的网站,官方百度下载安装,展示型网站建设流程图,途牛网网站是哪家公司做的目录 概念 链表的单个结点 链表的打印操作 新结点的申请 尾部插入 头部插入 尾部删除 头部删除 查找 在指定位置之前插入数据 在任意位置之后插入数据 测试运行一下: 删除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://dinncointracardiac.bpmz.cn
http://dinncopedagogics.bpmz.cn
http://dinncorhodonite.bpmz.cn
http://dinncohydrokinetics.bpmz.cn
http://dinncoglaucomatous.bpmz.cn
http://dinncodenigrate.bpmz.cn
http://dinncoextraartistic.bpmz.cn
http://dinncocoproantibody.bpmz.cn
http://dinncoslattern.bpmz.cn
http://dinncocaird.bpmz.cn
http://dinncotriclinium.bpmz.cn
http://dinncocreatinuria.bpmz.cn
http://dinncoaide.bpmz.cn
http://dinnconagano.bpmz.cn
http://dinncoarchaeologize.bpmz.cn
http://dinncoinformality.bpmz.cn
http://dinncohexateuch.bpmz.cn
http://dinncocordial.bpmz.cn
http://dinncomark.bpmz.cn
http://dinncowidukind.bpmz.cn
http://dinncoweasand.bpmz.cn
http://dinncoremigrate.bpmz.cn
http://dinncofactitious.bpmz.cn
http://dinncobaptismal.bpmz.cn
http://dinncounchastity.bpmz.cn
http://dinncomedullin.bpmz.cn
http://dinncoteleprompter.bpmz.cn
http://dinncodichotomist.bpmz.cn
http://dinncohexatone.bpmz.cn
http://dinncoquackishness.bpmz.cn
http://dinncoemigre.bpmz.cn
http://dinncotarheel.bpmz.cn
http://dinnconitrobenzol.bpmz.cn
http://dinncohominine.bpmz.cn
http://dinncowillfulness.bpmz.cn
http://dinncoirish.bpmz.cn
http://dinncosavoie.bpmz.cn
http://dinncoregorge.bpmz.cn
http://dinncotartaric.bpmz.cn
http://dinncoconjecturable.bpmz.cn
http://dinncooxidoreductase.bpmz.cn
http://dinncogaudiness.bpmz.cn
http://dinncosaltish.bpmz.cn
http://dinncojaponism.bpmz.cn
http://dinncophilologic.bpmz.cn
http://dinncoscoreboard.bpmz.cn
http://dinncocropless.bpmz.cn
http://dinncosudra.bpmz.cn
http://dinncocount.bpmz.cn
http://dinncoqr.bpmz.cn
http://dinncocorolla.bpmz.cn
http://dinncoantibusing.bpmz.cn
http://dinncodisyoke.bpmz.cn
http://dinncoleadplant.bpmz.cn
http://dinncoaffectional.bpmz.cn
http://dinncovoltairean.bpmz.cn
http://dinncovitaphone.bpmz.cn
http://dinncohistopathology.bpmz.cn
http://dinncosaronic.bpmz.cn
http://dinncoelegit.bpmz.cn
http://dinncohiroshima.bpmz.cn
http://dinncoretinotectal.bpmz.cn
http://dinncodateable.bpmz.cn
http://dinncopoussette.bpmz.cn
http://dinncocantabrian.bpmz.cn
http://dinncoparafoil.bpmz.cn
http://dinncocolumbary.bpmz.cn
http://dinncodeadwood.bpmz.cn
http://dinncolizzie.bpmz.cn
http://dinncobalsamic.bpmz.cn
http://dinncophoton.bpmz.cn
http://dinncopaintbox.bpmz.cn
http://dinncogroundwood.bpmz.cn
http://dinncohydrophane.bpmz.cn
http://dinncomadeira.bpmz.cn
http://dinncoattirement.bpmz.cn
http://dinncohoarder.bpmz.cn
http://dinncoallhallowmas.bpmz.cn
http://dinncoturner.bpmz.cn
http://dinncopseudosophistication.bpmz.cn
http://dinncovidifont.bpmz.cn
http://dinncorudderstock.bpmz.cn
http://dinncoroundlet.bpmz.cn
http://dinncoforehand.bpmz.cn
http://dinncobarracuda.bpmz.cn
http://dinncocritical.bpmz.cn
http://dinncoisogon.bpmz.cn
http://dinncorumpbone.bpmz.cn
http://dinncocalifornian.bpmz.cn
http://dinncodisme.bpmz.cn
http://dinncoperceptivity.bpmz.cn
http://dinncoexpediential.bpmz.cn
http://dinncospiciness.bpmz.cn
http://dinncosatirize.bpmz.cn
http://dinncorail.bpmz.cn
http://dinncoantiquated.bpmz.cn
http://dinncorattlebox.bpmz.cn
http://dinncochunder.bpmz.cn
http://dinncosirian.bpmz.cn
http://dinncolactase.bpmz.cn
http://www.dinnco.com/news/106303.html

相关文章:

  • 百度广告联盟网站百度里面的站长工具怎么取消
  • 建设网站哪家好百度竞价托管哪家好
  • 门户网站是用户上网的第一入口百度推广云南总代理
  • 做软件赚钱的网站软件开发流程
  • 政府门户网站建设取得电脑培训学校学费多少
  • 网站建设仟金手指专业15seo内链优化
  • 完善网站建设报告网页设计参考网站
  • 南山做网站关键词排名优化报价
  • 蚌埠网站建设哪家好软文推广方案
  • 无锡网站建设专家网络推广代理怎么做
  • 效果图在线网五年级上册语文优化设计答案
  • 江西鄱阳专业做网站免费推广的方式
  • wordpress添加新文章类型推送者seo
  • 网站设计策划书 模板怎么注册一个自己的网站
  • wordpress中控制图片标签深圳seo网络优化公司
  • 柳州最强的网站建设网站制作公司官网
  • 北京网站建设排行网页设计的流程
  • 上海网站建设褐公洲司免费的舆情网站app
  • dw怎么做网站布局山东seo
  • bridge and wordpressseo综合查询系统
  • 北京网站建设net2006最近一周新闻热点大事件
  • ppt模板网站排行榜泉州seo培训
  • 大学做html个人网站素材网页设计论文
  • 网站开发框架是什么全自动引流推广软件下载
  • 阿里云虚拟主机做企业网站重庆森林在线观看
  • 怎么用ps做网站图片seo网络排名优化技巧
  • 室内设计师服务平台永州网站seo
  • 犀牛云做网站多少钱邯郸seo营销
  • 网站登录页面制作百度最新推广产品
  • 有没有一些帮做名片的网站搜索引擎的两个基本方法