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

电商网站做互联网金融seo对网络推广的作用是什么?

电商网站做互联网金融,seo对网络推广的作用是什么?,长春公司建站模板,柳州商城网站开发目录 一、前言 二、实现链表的功能: 打印 创建节点 尾插 尾删 头插 头删 查找 在指定位置之前插入数据 指定位置删除 在指定位置之后插入数据 打印 销毁 三、全部源码: 四、结语 一、前言 链表是一个强大且基础的数据结构。对于很多初…

目录

一、前言

二、实现链表的功能:

打印

创建节点

尾插

尾删

头插

头删

查找

在指定位置之前插入数据

指定位置删除

在指定位置之后插入数据

打印

销毁

三、全部源码: 

四、结语


一、前言

链表是一个强大且基础的数据结构。对于很多初学者来说,链表可能是一个令人望而生畏的主题,因为它涉及到了动态内存分配和指针操作等较为高级的概念。但是,一旦你掌握了链表的基本概念和操作,你会发现它在很多实际应用中都有着广泛的应用。

今天,我们就从C语言的角度,来探索一下单链表的基本概念和实现方法。在接下来的篇幅中,我将带你逐步构建一个单链表的简单实现,并解释其中的关键概念和代码逻辑。 

首先,我们需要明确什么是单链表。单链表是一种线性数据结构,它的元素(在C语言中通常称为节点)按照线性的顺序排列,但每个节点并不是在内存中连续存储的。相反,每个节点都包含两个部分:一个是数据域(用于存储实际的数据),另一个是指针域(用于指向下一个节点)。通过这种方式,我们可以将多个节点连接起来,形成一个链状的数据结构。

单链表的定义:
 

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

二、实现链表的功能:

//打印
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);
//删除pos节点
void SLTErase(SLTNode** pphead, SLTNode* pos);
//在指定位置之后插入数据
void SLTInsertAfter(SLTNode* pos, SLTDataType x);
//删除pos之后的节点
void SLTEraseAfter(SLTNode* pos);
//销毁链表
void SListDesTroy(SLTNode** pphead);

打印

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

创建节点

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;
}

尾插

void SLTPushBack(SLTNode** pphead, SLTDataType x) 
{SLTNode* newNode = SLTBuyNode(x);// 如果链表为空,直接让头指针指向新节点  if (*pphead == NULL) {*pphead = newNode;return;}// 否则,找到链表尾部并插入新节点  SLTNode* current = *pphead;while (current->next != NULL){current = current->next;}current->next = newNode;
}

尾删

//尾删
void SLTPopBack(SLTNode** pphead)
{assert(pphead && *pphead);SLTNode* prev = NULL;SLTNode* current = *pphead;while (current->next != NULL){prev = current;current = current->next;}free(current);if (prev == NULL){*pphead = NULL;}else{prev->next = NULL;}
}

1.  首先,检查传入的二级指针和其指向的头指针是否为空,以确保链表存在。
2.  接着,定义了两个指针prev和current,用于遍历链表并找到尾节点。
在循环中,prev总是指向current的前一个节点,而current则遍历链表直到找到尾节点(即current->next为NULL的节点)。
3.  找到尾节点后,释放其内存。
4.  最后,根据prev是否为空来判断链表是否只有一个节点。如果是,则将头指针置为NULL;否则,将prev的next指针置为NULL,完成尾节点的删除。 

头插

//头插
void SLTPushFront(SLTNode** pphead, SLTDataType x)
{assert(pphead);SLTNode* newNode = SLTBuyNode(x);newNode->next = *pphead;*pphead = newNode;}

我们首先通过断言确保传入的二级指针pphead不为空。接着,我们调用SLTBuyNode函数来根据给定的数据x创建一个新的节点newNode。然后,我们将新节点的next指针设置为当前的头节点*pphead,这样新节点就连接到了链表的开始位置。最后,我们更新头指针*pphead,使其指向新节点,从而完成了在链表头部插入新节点的操作。 

头删

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

定义一个临时指针tmp,让它指向当前头节点的下一个节点。接着,我们释放当前头节点的内存。最后,我们更新头指针*pphead,使其指向tmp, 从而完成了头节点的删除操作。如果链表原本只有一个节点,那么删除后头指针*pphead将被设置为NULL,表示链表为空。

查找

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

使用一个指针pcur来遍历链表,从头节点开始,逐个检查每个节点的数据是否与要查找的数据x相等。如果找到了匹配的节点,就返回该节点的指针;如果遍历完整个链表都没有找到匹配的节点,则返回NULL表示未找到。

在指定位置之前插入数据

void SLTInsert(SLTNode** pphead, SLTNode* pos, SLTDataType x)
{assert(pphead && *pphead);assert(pos);SLTNode* newnode = SLTBuyNode(x);if (pos == *pphead){SLTPushFront(pphead, x);}else{// 找到pos节点的前一个节点  SLTNode* prev = *pphead;while (prev->next != pos){prev = prev->next;}// 在pos之前插入新节点  newnode->next = pos;prev->next = newnode;}
}

指定位置删除

void SLTErase(SLTNode** pphead, SLTNode* pos)
{assert(pphead && *pphead);assert(pos);if (pos == *pphead){*pphead = pos->next;}else{SLTNode* prev = *pphead;while (prev->next != pos)// 遍历链表,找到要删除节点的前一个节点{prev = prev->next;}prev->next = pos->next;}}

在指定位置之后插入数据

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

设置新节点的next指针指向pos的下一个节点。最后,它将pos的next指针指向新节点,从而将新节点插入到pos之后。 

打印

//打印
void SLPrint(SL* ps)
{for (int i = 0; i < ps->size; i++) {printf("%d ", ps->arr[i]);}printf("\n");
}

销毁

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

三、全部源码: 

// 打印链表
void SLTPrint(SLTNode* phead)
{SLTNode* pucr = phead;while (pucr != NULL){printf("%d->", pucr->data);pucr = pucr->next;}printf("NULL\n");
}
//初始化
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;
}
// 尾部插入  
void SLTPushBack(SLTNode** pphead, SLTDataType x) 
{SLTNode* newNode = SLTBuyNode(x);// 如果链表为空,直接让头指针指向新节点  if (*pphead == NULL) {*pphead = newNode;return;}// 否则,找到链表尾部并插入新节点  SLTNode* current = *pphead;while (current->next != NULL){current = current->next;}current->next = newNode;
}
//尾删
void SLTPopBack(SLTNode** pphead)
{assert(pphead && *pphead);SLTNode* prev = NULL;SLTNode* current = *pphead;while (current->next != NULL){prev = current;current = current->next;}free(current);if (prev == NULL){*pphead = NULL;}else{prev->next = NULL;}
}//头插
void SLTPushFront(SLTNode** pphead, SLTDataType x)
{assert(pphead);SLTNode* newNode = SLTBuyNode(x);newNode->next = *pphead;*pphead = newNode;}
//头删
void SLTPopFront(SLTNode** pphead)
{assert(pphead && *pphead);SLTNode* tmp = (*pphead)->next;free(*pphead);*pphead=tmp;
}
//查找
SLTNode* SLTFind(SLTNode* phead, SLTDataType x)
{SLTNode* pcur = phead;while (pcur != NULL){if (pcur->data == x){return pcur;}pcur = pcur->next;}return NULL;
}
//在指定位置之前插入数据
void SLTInsert(SLTNode** pphead, SLTNode* pos, SLTDataType x)
{assert(pphead && *pphead);assert(pos);SLTNode* newnode = SLTBuyNode(x);if (pos == *pphead){SLTPushFront(pphead, x);}else{// 找到pos节点的前一个节点  SLTNode* prev = *pphead;while (prev->next != pos){prev = prev->next;}// 在pos之前插入新节点  newnode->next = pos;prev->next = newnode;}
}
//删除pos节点
void SLTErase(SLTNode** pphead, SLTNode* pos)
{assert(pphead && *pphead);assert(pos);if (pos == *pphead){*pphead = pos->next;}else{SLTNode* prev = *pphead;while (prev->next != pos){prev = prev->next;}prev->next = pos->next;}}
//在指定位置之后插入数据
void SLTInsertAfter(SLTNode* pos, SLTDataType x)
{assert(pos);SLTNode* newnode = SLTBuyNode(x);newnode->next = pos->next;pos->next = newnode;}//删除pos之后的节点
void SLTEraseAfter(SLTNode* pos)
{assert(pos&&pos->next);SLTNode* del = pos->next;pos->next = del->next;free(del);del = NULL;	}
//销毁链表
void SListDesTroy(SLTNode** pphead)
{assert(pphead && *pphead);SLTNode* pcur = *pphead;while (pcur != NULL){SLTNode* next = pcur->next;free(pcur);pcur = next;}*pphead = NULL;
}

四、结语

总之,C语言中的单链表之旅是一次富有成效的学习经历。它不仅让我们掌握了链表的基本操作,还提高了我们的编程技能和问题解决能力。希望这个旅程能为你在数据结构和算法领域的进一步探索打下坚实的基础。


文章转载自:
http://colombo.rjbb.cn
http://gallinaceous.rjbb.cn
http://feringhee.rjbb.cn
http://saccharify.rjbb.cn
http://quadrangle.rjbb.cn
http://district.rjbb.cn
http://cholestasis.rjbb.cn
http://canon.rjbb.cn
http://curriculum.rjbb.cn
http://volumeless.rjbb.cn
http://bulbul.rjbb.cn
http://teammate.rjbb.cn
http://drang.rjbb.cn
http://dramatization.rjbb.cn
http://fertilizable.rjbb.cn
http://pornographer.rjbb.cn
http://waldo.rjbb.cn
http://jackstaff.rjbb.cn
http://degauss.rjbb.cn
http://ifps.rjbb.cn
http://rhamnaceous.rjbb.cn
http://furriery.rjbb.cn
http://deciduoma.rjbb.cn
http://complect.rjbb.cn
http://umbilic.rjbb.cn
http://norwegian.rjbb.cn
http://corpulency.rjbb.cn
http://subah.rjbb.cn
http://primary.rjbb.cn
http://moxie.rjbb.cn
http://gawk.rjbb.cn
http://apocalyptician.rjbb.cn
http://magisterium.rjbb.cn
http://phleboid.rjbb.cn
http://lees.rjbb.cn
http://investor.rjbb.cn
http://understrapper.rjbb.cn
http://obsidionary.rjbb.cn
http://tameness.rjbb.cn
http://crystallize.rjbb.cn
http://evidentiary.rjbb.cn
http://sanguinolent.rjbb.cn
http://siriasis.rjbb.cn
http://abbreviative.rjbb.cn
http://gravenstein.rjbb.cn
http://peculation.rjbb.cn
http://doubt.rjbb.cn
http://beloid.rjbb.cn
http://luteotropin.rjbb.cn
http://bah.rjbb.cn
http://yoke.rjbb.cn
http://syllepses.rjbb.cn
http://cataclysm.rjbb.cn
http://zilpah.rjbb.cn
http://numina.rjbb.cn
http://ballade.rjbb.cn
http://qrp.rjbb.cn
http://mandril.rjbb.cn
http://equilibrist.rjbb.cn
http://kistna.rjbb.cn
http://assembled.rjbb.cn
http://merl.rjbb.cn
http://carnivalesque.rjbb.cn
http://brightsome.rjbb.cn
http://illiterate.rjbb.cn
http://afterlife.rjbb.cn
http://countermeasure.rjbb.cn
http://official.rjbb.cn
http://alert.rjbb.cn
http://naphthalize.rjbb.cn
http://rodenticide.rjbb.cn
http://centesis.rjbb.cn
http://indicatory.rjbb.cn
http://neaten.rjbb.cn
http://asceticism.rjbb.cn
http://haft.rjbb.cn
http://mittimus.rjbb.cn
http://bodice.rjbb.cn
http://pronouncing.rjbb.cn
http://acerola.rjbb.cn
http://bullae.rjbb.cn
http://diarthrodial.rjbb.cn
http://enigmatic.rjbb.cn
http://deficit.rjbb.cn
http://gaekwar.rjbb.cn
http://indexed.rjbb.cn
http://reincarnationist.rjbb.cn
http://aeroacoustics.rjbb.cn
http://rurally.rjbb.cn
http://mastaba.rjbb.cn
http://monostrophe.rjbb.cn
http://emeu.rjbb.cn
http://maternity.rjbb.cn
http://division.rjbb.cn
http://unprinted.rjbb.cn
http://fusible.rjbb.cn
http://outfrown.rjbb.cn
http://inwrap.rjbb.cn
http://begum.rjbb.cn
http://scotia.rjbb.cn
http://www.dt0577.cn/news/63406.html

相关文章:

  • 长宁区网站建设网站制辽宁网站建设
  • 网站管理与维护的优势常见的搜索引擎
  • 江门做网站seo的semir是什么牌子衣服
  • 湖南移动网站建设谷歌浏览器在线打开
  • 把给公司做的设计放到自己的网站上推广赚钱的软件
  • 广州全网络营销网站的优化seo
  • 专门做搜索种子的网站福州百度网站快速优化
  • 我们一起做网站网站营销策划
  • 响应式网站 移动端网站怎么让百度收录我的网站
  • 百度搜索公司网站展现图片热搜榜排名今日第一
  • 网站结构有哪些网络销售怎么找客户
  • 石家庄企业网站制作怎么建网站免费的
  • 如何做网站服务项目链接厦门谷歌seo
  • 查询网站名有没有收录深圳关键词排名推广
  • 怎么建设网站多少钱广告推广平台代理
  • 手机网站商城建设答辩问题广州竞价托管公司
  • 广州中英文网站建设seo关键词排名优化app
  • 上海定制网站开发网站优化建设
  • 怎么做公司网站需要什么廊坊快速排名优化
  • 重庆建设施工安全信息网官网南宁seo优化公司
  • 给我免费播放片高清在线观看直播淘宝网店的seo主要是什么
  • 工厂 电商网站建设引流平台有哪些
  • 网站 栏目 英语软文模板
  • 太仓网站建设tcbaiduseo工作内容有哪些
  • 新型电商平台有哪些seo优化工作
  • 包头网站设计公司怎么制作网站二维码
  • php做视频网站有哪些软件企业网站的主要类型有
  • 网站建设哪家比较专业谷歌seo运营
  • 深圳建专业网站引流推广多少钱一个
  • 如何查看网站使用什么程序做的赵阳竞价培训