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

网站建设费怎样摊销百度指数的使用方法

网站建设费怎样摊销,百度指数的使用方法,百度网站的优点,ssr和wordpress目录一、什么是单链表?二、单链表的增删查改2.1 结构体变量的声明2.2 申请新结点2.2 链表的头插2.3 链表的尾插2.4 链表的头删2.5 链表的尾删2.6 链表的查找2.7 链表的任意位置后面插入2.8 链表的任意位置后面删除2.9 链表的销毁2.10 链表的打印三、代码汇总3.1 SLi…

目录

  • 一、什么是单链表?
  • 二、单链表的增删查改
    • 2.1 结构体变量的声明
    • 2.2 申请新结点
    • 2.2 链表的头插
    • 2.3 链表的尾插
    • 2.4 链表的头删
    • 2.5 链表的尾删
    • 2.6 链表的查找
    • 2.7 链表的任意位置后面插入
    • 2.8 链表的任意位置后面删除
    • 2.9 链表的销毁
    • 2.10 链表的打印
  • 三、代码汇总
    • 3.1 SLish.h
    • 3.2 SLish.c
    • 3.3 test.c

一、什么是单链表?

单链表是一种链式存取的数据结构,,链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。以“结点的序列”表示的线性表称作线性链表(单链表),单链表是链式存取的结构。简单来说单链表就是一个一个的节点链接起来的链式结构,每个节点里面存储着一个数据和与它链接的下一个节点的(指针)地址。(注意,每一个节点都是同一种结构体类型)

二、单链表的增删查改

2.1 结构体变量的声明

typedef int SLTDataType;
typedef struct SLTNode
{SLTDataType data;struct SLTNode* next;}SLTNode;

2.2 申请新结点

SLTNode* BuySListNode(SLTDataType x)
{SLTNode* newNode = (SLTNode*)malloc(sizeof(SLTNode));if (newNode == NULL){perror("malloc fail");return NULL;}else{newNode->data = x;newNode->next = NULL;return newNode;}
}

2.2 链表的头插

void SListPushFront(SLTNode** pphead, SLTDataType x)
{assert(pphead);SLTNode* newNode = BuySListNode(x);newNode->next = *pphead;*pphead = newNode;
}

2.3 链表的尾插

void SListPushBack(SLTNode** pphead, SLTDataType x)
{assert(pphead);SLTNode* newNode = BuySListNode(x);if (*pphead == NULL){*pphead = newNode;}else{SLTNode* tail = *pphead;while (tail->next){tail = tail->next;}tail->next = newNode;}}

2.4 链表的头删

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

2.5 链表的尾删

void SListPopBack(SLTNode** pphead)
{assert(pphead);assert(*pphead);if ((*pphead)->next == NULL){free(*pphead);*pphead = NULL;}else{SLTNode* tailPrev = NULL;SLTNode* tail = *pphead;while (tail->next){tailPrev = tail;tail = tail->next;}tailPrev->next = NULL;free(tail);tail = NULL;}}

2.6 链表的查找

SLTNode* SListFind(SLTNode* pphead, SLTDataType x)
{SLTNode* cur = pphead;while (cur){if (cur->data == x){return cur;}else{cur = cur->next;}}printf("找不到%d\n",x);return NULL;}

2.7 链表的任意位置后面插入

void SListInsertAfter(SLTNode* pos, SLTDataType x)
{assert(pos);SLTNode* newNode = BuySListNode(x);SLTNode* posNext = pos->next;pos->next = newNode;newNode->next = posNext;}

2.8 链表的任意位置后面删除

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

2.9 链表的销毁

//建议传二级指针,因为销毁的话需要把这个指向链表的指针置空
//传一级指针无法把指向链表的指针置空
void SListDestroy(SLTNode** pphead)
{SLTNode* cur = *pphead;while (cur){SLTNode* del = cur;cur = cur->next;free(del);del = NULL;}*pphead = NULL;
}

2.10 链表的打印

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

三、代码汇总

3.1 SLish.h

#pragma once//SList.h#include <stdio.h>
#include <assert.h>
#include <stdlib.h>typedef int SLTDataType;
typedef struct SLTNode
{SLTDataType data;struct SLTNode* next;}SLTNode;// 动态申请一个节点
extern SLTNode* BuySListNode(SLTDataType x);
// 单链表打印
extern void SListPrint(SLTNode* phead);
// 单链表尾插
extern void SListPushBack(SLTNode** pphead, SLTDataType x);
// 单链表的头插
extern void SListPushFront(SLTNode** pphead, SLTDataType x);
// 单链表的尾删
extern void SListPopBack(SLTNode** pphead);
// 单链表头删
extern void SListPopFront(SLTNode** pphead);
// 单链表查找
extern SLTNode* SListFind(SLTNode* pphead, SLTDataType x);
// 单链表在pos位置之后插入x
// 分析思考为什么不在pos位置之前插入?
extern void SListInsertAfter(SLTNode* pos, SLTDataType x);
// 单链表删除pos位置之后的值
// 分析思考为什么不删除pos位置?
extern void SListEraseAfter(SLTNode* pos);
// 单链表的销毁
extern void SListDestroy(SLTNode** pphead);

3.2 SLish.c

#define _CRT_SECURE_NO_WARNINGS 1
//Slist.c#include "SList.h"SLTNode* BuySListNode(SLTDataType x)
{SLTNode* newNode = (SLTNode*)malloc(sizeof(SLTNode));if (newNode == NULL){perror("malloc fail");return NULL;}else{newNode->data = x;newNode->next = NULL;return newNode;}
}void SListPrint(SLTNode* phead)
{SLTNode* cur = phead;while (cur){printf("%d->", cur->data);cur = cur->next;}printf("NULL\n");}void SListPushBack(SLTNode** pphead, SLTDataType x)
{assert(pphead);SLTNode* newNode = BuySListNode(x);if (*pphead == NULL){*pphead = newNode;}else{SLTNode* tail = *pphead;while (tail->next){tail = tail->next;}tail->next = newNode;}}void SListPushFront(SLTNode** pphead, SLTDataType x)
{assert(pphead);SLTNode* newNode = BuySListNode(x);newNode->next = *pphead;*pphead = newNode;
}void SListPopBack(SLTNode** pphead)
{assert(pphead);assert(*pphead);if ((*pphead)->next == NULL){free(*pphead);*pphead = NULL;}else{SLTNode* tailPrev = NULL;SLTNode* tail = *pphead;while (tail->next){tailPrev = tail;tail = tail->next;}tailPrev->next = NULL;free(tail);tail = NULL;}}void SListPopFront(SLTNode** pphead)
{assert(pphead && *pphead);SLTNode* del = *pphead;*pphead = (*pphead)->next;free(del);del = NULL;}SLTNode* SListFind(SLTNode* pphead, SLTDataType x)
{SLTNode* cur = pphead;while (cur){if (cur->data == x){return cur;}else{cur = cur->next;}}printf("找不到%d\n",x);return NULL;}void SListInsertAfter(SLTNode* pos, SLTDataType x)
{assert(pos);SLTNode* newNode = BuySListNode(x);SLTNode* posNext = pos->next;pos->next = newNode;newNode->next = posNext;}void SListEraseAfter(SLTNode* pos)
{assert(pos && pos->next);SLTNode* posNext = pos->next;pos->next = posNext->next;free(posNext);posNext = NULL;}void SListDestroy(SLTNode** pphead)
{SLTNode* cur = *pphead;while (cur){SLTNode* del = cur;cur = cur->next;free(del);del = NULL;}*pphead = NULL;
}

3.3 test.c

#define _CRT_SECURE_NO_WARNINGS 1
//test.c#include "SList.h"void test_SListPushBack(void)
{SLTNode* plist = NULL;SListPushBack(&plist, 1);SListPushBack(&plist, 2);SListPushBack(&plist, 3);SListPushBack(&plist, 4);SListPushBack(&plist, 5);SListPrint(plist);SLTNode* ret = SListFind(plist, 1);if (ret != NULL){printf("找到了,地址为:%p\n", ret);SListInsertAfter(ret, 6);SListPrint(plist);}ret = SListFind(plist, 1);if (ret != NULL){printf("找到了,地址为:%p\n", ret);SListInsertAfter(ret, 7);SListPrint(plist);}ret = SListFind(plist, 1);if (ret != NULL){printf("找到了,地址为:%p\n", ret);SListInsertAfter(ret, 8);SListPrint(plist);}ret = SListFind(plist, 1);if (ret != NULL){printf("找到了,地址为:%p\n", ret);SListInsertAfter(ret, 9);SListPrint(plist);}ret = SListFind(plist, 1);if (ret != NULL){printf("找到了,地址为:%p\n", ret);SListInsertAfter(ret, 10);SListPrint(plist);}/*SLTNode* ret = SListFind(plist, 1);if (ret != NULL){printf("找到了,地址为:%p\n", ret);SListEraseAfter(ret);SListPrint(plist);}ret = SListFind(plist, 1);if (ret != NULL){printf("找到了,地址为:%p\n", ret);SListEraseAfter(ret);SListPrint(plist);}ret = SListFind(plist, 1);if (ret != NULL){printf("找到了,地址为:%p\n", ret);SListEraseAfter(ret);SListPrint(plist);}ret = SListFind(plist, 1);if (ret != NULL){printf("找到了,地址为:%p\n", ret);SListEraseAfter(ret);SListPrint(plist);}*//*ret = SListFind(plist, 1);if (ret != NULL){printf("找到了,地址为:%p\n", ret);SListEraseAfter(ret);SListPrint(plist);}*///SListInsertAfter(ret, 8);/*SListPrint(plist);SListPopFront(&plist);SListPrint(plist);SListPopFront(&plist);SListPrint(plist); SListPopFront(&plist);SListPrint(plist); SListPopFront(&plist);SListPrint(plist); SListPopFront(&plist);SListPrint(plist);*/}void test_SListPushFront(void)
{SLTNode* plist = NULL;SListPushFront(&plist, 1);SListPushFront(&plist, 2);SListPushFront(&plist, 3);SListPushFront(&plist, 4);SListPushFront(&plist, 5);SListPrint(plist);SListPopFront(&plist);SListPrint(plist);SListPopFront(&plist);SListPrint(plist);SListPopFront(&plist);SListPrint(plist);SListPopFront(&plist);SListPrint(plist);SListPopFront(&plist);SListPrint(plist);/*SListPopFront(&plist);SListPrint(plist);*///SListDestroy(plist);//SListPrint(plist);/*SListPopBack(&plist);SListPrint(plist);SListPopBack(&plist);SListPrint(plist);SListPopBack(&plist);SListPrint(plist);SListPopBack(&plist);SListPrint(plist);SListPopBack(&plist);SListPrint(plist);*/}int main()
{//test_SListPushBack();test_SListPushFront();return 0;
}

以上就是有关单链表增删查改的全部内容了,你学会了吗?如果对你有帮助,点亮一下小心心,点点关注呗,后期会持续更新计算机相关知识哦!!!


文章转载自:
http://dinncointerlineation.bpmz.cn
http://dinncosheller.bpmz.cn
http://dinncostableboy.bpmz.cn
http://dinncocabala.bpmz.cn
http://dinncopsoralea.bpmz.cn
http://dinncobeadle.bpmz.cn
http://dinncoganglioid.bpmz.cn
http://dinncomar.bpmz.cn
http://dinncooverhead.bpmz.cn
http://dinncospinulated.bpmz.cn
http://dinncotacamahaca.bpmz.cn
http://dinncosectile.bpmz.cn
http://dinncosemite.bpmz.cn
http://dinncobowshock.bpmz.cn
http://dinnconewtonian.bpmz.cn
http://dinncokomi.bpmz.cn
http://dinncoconcision.bpmz.cn
http://dinncopearson.bpmz.cn
http://dinncosealed.bpmz.cn
http://dinncomilligrame.bpmz.cn
http://dinncopostfix.bpmz.cn
http://dinnconeuropter.bpmz.cn
http://dinncoarroyo.bpmz.cn
http://dinncobiotron.bpmz.cn
http://dinncosocratic.bpmz.cn
http://dinncodiverting.bpmz.cn
http://dinncorhapsode.bpmz.cn
http://dinncostinkpot.bpmz.cn
http://dinncophilological.bpmz.cn
http://dinncohel.bpmz.cn
http://dinncowhitaker.bpmz.cn
http://dinncoetic.bpmz.cn
http://dinncotramontana.bpmz.cn
http://dinncosensitiveness.bpmz.cn
http://dinncoarpeggio.bpmz.cn
http://dinncoindicial.bpmz.cn
http://dinncothu.bpmz.cn
http://dinncowile.bpmz.cn
http://dinncolarboard.bpmz.cn
http://dinncoisapi.bpmz.cn
http://dinncorecurrent.bpmz.cn
http://dinncorisque.bpmz.cn
http://dinncoanthroposophy.bpmz.cn
http://dinncoachaetous.bpmz.cn
http://dinncotallboy.bpmz.cn
http://dinncomerchandizer.bpmz.cn
http://dinncoscoopful.bpmz.cn
http://dinncocockayne.bpmz.cn
http://dinncoliposarcoma.bpmz.cn
http://dinncospanish.bpmz.cn
http://dinncoforebrain.bpmz.cn
http://dinncoforebody.bpmz.cn
http://dinncokadi.bpmz.cn
http://dinncochasmal.bpmz.cn
http://dinncosemiabstract.bpmz.cn
http://dinncoswart.bpmz.cn
http://dinncoskiwear.bpmz.cn
http://dinncoeightsome.bpmz.cn
http://dinncoscrunch.bpmz.cn
http://dinncogingerliness.bpmz.cn
http://dinncofarouche.bpmz.cn
http://dinncoruralist.bpmz.cn
http://dinncosawlog.bpmz.cn
http://dinncophylogeny.bpmz.cn
http://dinncolinebred.bpmz.cn
http://dinncomarrowsky.bpmz.cn
http://dinncodecurved.bpmz.cn
http://dinncofastigiate.bpmz.cn
http://dinncogonococcus.bpmz.cn
http://dinncocordless.bpmz.cn
http://dinncoestella.bpmz.cn
http://dinncoophite.bpmz.cn
http://dinncohumanize.bpmz.cn
http://dinncoprelatic.bpmz.cn
http://dinncoecdysterone.bpmz.cn
http://dinncogawp.bpmz.cn
http://dinncosmilodon.bpmz.cn
http://dinncohomogenization.bpmz.cn
http://dinncoprebend.bpmz.cn
http://dinncoquery.bpmz.cn
http://dinncocecity.bpmz.cn
http://dinncometz.bpmz.cn
http://dinncodisforest.bpmz.cn
http://dinncoguile.bpmz.cn
http://dinncohutch.bpmz.cn
http://dinncothrive.bpmz.cn
http://dinncoimpersonify.bpmz.cn
http://dinncochromatic.bpmz.cn
http://dinncoruddy.bpmz.cn
http://dinncofustanella.bpmz.cn
http://dinncodimetric.bpmz.cn
http://dinncoaztecan.bpmz.cn
http://dinncojuggle.bpmz.cn
http://dinncolambent.bpmz.cn
http://dinncofelonry.bpmz.cn
http://dinnconannofossil.bpmz.cn
http://dinncomeaningful.bpmz.cn
http://dinncobicorne.bpmz.cn
http://dinncogyrase.bpmz.cn
http://dinncospiderman.bpmz.cn
http://www.dinnco.com/news/114338.html

相关文章:

  • 企业网站及公众号建设方案提高网站搜索排名
  • 深圳网站设计九曲湖北最新消息
  • 颇有名气的网站建设专家武汉网站营销seo方案
  • 用易语言可以做网站吗湖南省人民政府
  • 用vue做网站一般用什么组件库网站制作定制
  • 怎么找网站后台电商网络推广
  • wordpress文章下载关键词seo
  • 小浣熊做单网站网站优化推广的方法
  • ps做网站页面先后顺序免费正规大数据查询平台
  • 梧州网站建设服务商appstore关键词优化
  • 做网站专题页的字大小是多少关键词快速排名软件价格
  • 全屏网站 功能网站页面怎么优化
  • 福建建设资格执业注册管理中心网站保定seo推广外包
  • 德阳建设厅官方网站东莞做网站最好的是哪家
  • 沈阳网站建设选网龙seo sem推广
  • 长沙网站seo收费阿里云免费建站
  • 海北高端网站建设杭州网络优化公司排名
  • 网站自己可以做么seo关键字排名优化
  • 企业网站seo方案案例百度收录申请入口
  • 制作app需要先做网站西安百度竞价托管公司
  • 咸鱼网站做链接优化网络推广外包
  • 网络广告推广员seo排名优化seo
  • 艺友网站建设进入百度app
  • 网站建设的业务员故事性营销软文
  • 吉林省党风廉政建设官方网站芭嘞seo
  • 商业网站需要多少钱seo服务公司
  • 网页设计作业 个人网站公司网页设计
  • iH5做网站百度学术官网登录入口
  • 中国建设银行网站对公业务个人怎么做网络推广
  • 公司网站有收录没排名品牌推广案例