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

网站显示建设中页面营销方式有哪几种

网站显示建设中页面,营销方式有哪几种,设计做笔记的网站,wordpress 白色一.实现一个单链表&#xff08;无头单向不循环&#xff09; 我们首先实现一个无头单向不循环单链表。 写出基本的增删查改功能&#xff0c;以及其它的一些功能&#xff08;可忽略&#xff09;。 #include<stdio.h> #include<assert.h> #include<stdlib.h>…

一.实现一个单链表(无头单向不循环)

我们首先实现一个无头单向不循环单链表。

写出基本的增删查改功能,以及其它的一些功能(可忽略)。

#include<stdio.h>
#include<assert.h>
#include<stdlib.h>
typedef int SLTDataType;typedef struct SListNode
{SLTDataType data;struct SListNode* next;
}SLTNode;SLTNode* BuyListNode(SLTDataType x)
{SLTNode* newnode = (SLTNode*)malloc(sizeof(SLTNode));if (newnode == NULL){printf("malloc failed.\n");exit(-1);}newnode->data = x;newnode->next = NULL;
}void SListPrint(SLTNode* phead)
{SLTNode* cur = phead;while (cur != NULL){printf("%d->", cur->data);cur = cur->next;}printf("NULL\n");
}void SListPushBack(SLTNode** pphead, SLTDataType x)
{SLTNode* newnode = BuyListNode(x);if (*pphead == NULL){*pphead = newnode;}else{//找到尾结点SLTNode* tail = *pphead;while (tail->next != NULL){tail = tail->next;}tail->next = newnode;}
}void SListPushFront(SLTNode** pphead, SLTDataType x)
{SLTNode* newnode = BuyListNode(x);newnode->next = *pphead;*pphead = newnode;
}void SListPopBack(SLTNode** pphead)
{assert(*pphead != NULL);if ((*pphead)->next == NULL){free(*pphead);*pphead = NULL;}else{SLTNode* tail = *pphead;SLTNode* prev = NULL;while (tail->next != NULL){prev = tail;tail = tail->next;}free(tail);tail = NULL;prev->next = NULL;}
}void SListPopFront(SLTNode** pphead)
{assert(*pphead);SLTNode* next = (*pphead)->next;free(*pphead);*pphead = next;
}SLTNode* SListFind(SLTNode* phead, SLTDataType x)
{SLTNode* cur = phead;while (cur){if (cur->data == x){return cur;}else{cur = cur->next;}}return NULL;
}void SListInsert(SLTNode** pphead, SLTNode* pos, SLTDataType x)
{SLTNode* newnode = BuyListNode(x);if (*pphead == pos){newnode->next = *pphead;*pphead = newnode;}else{SLTNode* posPrev = *pphead;while (posPrev->next != pos){posPrev = posPrev->next;}posPrev->next = newnode;newnode->next = pos;}
}void SListErase(SLTNode** pphead, SLTNode* pos)
{if (*pphead == pos){*pphead = pos->next;free(pos);}else{SLTNode* prev = *pphead;while (prev->next != pos){prev = prev->next;}prev->next = pos->next;free(pos);}
}void SListDestroy(SLTNode** pphead)
{assert(*pphead);SLTNode* cur = *pphead;SLTNode* next = (*pphead)->next;while (next){free(cur);cur = next;next = next->next;}free(cur);*pphead = NULL;
}//通过一趟遍历确定长度为n的单链表中值最大的结点
SLTNode* SListFindMax(SLTNode* pphead)
{assert(pphead);SLTNode* cur = pphead;SLTNode* maxnode = pphead;SLTDataType max = pphead->data;while (cur){if (cur->data > max){max = cur->data;maxnode = cur;}cur = cur->next;}return maxnode;
}

二.原地逆转

接下来我们要写一个接口,实现:将链表中所有结点的链接方向“原地”逆转,即要求仅利用原表的存储空间,换句话说,要求空间复杂度为O(1)

那么,我们需要将链表遍历,进行逆转,改变链接方向 时,要尤其注意,避免行差踏错。

//将链表中所有结点的链接方向“原地”逆转,即要求仅利用原表的存储空间,换句话说,要求空间复杂度为O(1)
void SListReverse(SLTNode** pphead) 
{SLTNode* head = *pphead;   //此指针在每次循环中始终指向当前链表的头SLTNode* tmp = head->next; //此指针在每次循环中始终指向要被后删头插的节点SLTNode* oldhead = *pphead;   //此指针在每次循环中始终指向原本的头结点,不会改变指向while (tmp) //如果tmp为空,则代表逆序结束,旧头的next已经是空的了,成为新链表的末尾{oldhead->next = tmp->next; //将tmp架空,实际是后删操作的一部分tmp->next = head; //让tmp变成新的头,实际是头插操作的一部分 head = tmp; //换头tmp = oldhead->next; //让tmp变成下次循环中待删除的节点}*pphead = head;
}

或许仅仅一段代码不足以让你理解,我们可以来看下面的图。

对照着代码,每一次循环就是下面的一行。

最后一行即为逆转后的链表。

 

 三.测试运行

最后,我们来看一下上面代码的运行效果。

我们可以写一个测试函数。

void TestSList()
{SLTNode* plist = NULL;SListPushBack(&plist, 1);SListPushBack(&plist, 2);SListPushBack(&plist, 3);SListPushBack(&plist, 4);SListPushBack(&plist, 5);SListPrint(plist);SListReverse(&plist);SListPrint(plist);SListDestroy(&plist);}int main()
{TestSList();return 0;
}

运行结果

这样,我们就实现了链表的原地逆转。 

http://www.yidumall.com/news/52435.html

相关文章:

  • 微网站建设步骤三门峡网站seo
  • 大鹏网络网站建设长尾关键词挖掘爱站网
  • 空压机东莞网站建设今日热点头条
  • 交互设计英文百度手机seo软件
  • 河北邯郸有几个区县seo推广优化方案
  • 做网站排名费用多少结构优化
  • 徐州微信网站建设广告做到百度第一页
  • 单页网站设计欣赏在线一键免费生成网页网站
  • 医院网站怎么做优化排名百度推广开户2400
  • 嘉兴做微网站多少钱上海网站推广服务公司
  • 北京大型网站建设竞价推广怎样管理
  • 苏州工业园区公共资源交易中心焦作整站优化
  • 网站建设竞价托管服务在线企业管理培训课程
  • 乌鲁木齐网站网络优化培训要多少钱
  • 微信开放平台与个人网站怎么企业课程培训
  • 做外链网站蜘蛛搜索引擎
  • 托福培训一对一免费seo
  • 凡客网站建设利尔化学股票股吧
  • 国外app模板下载网站成crm软件
  • WordPress获取用户密码seo公司推荐推广平台
  • 漳州网站开发制作棋牌天津百度搜索排名优化
  • 网络设计与实施课程设计windows优化大师怎么彻底删除
  • wordpress 非小工具形式 微博秀市场推广seo职位描述
  • 广东学校网站建设公司cps推广
  • 漯河调整最新通告安卓aso优化工具
  • 物流网站怎么做的百度推广助手电脑版
  • 如何创建一家公司怎么优化网站性能
  • 深圳网站制作哪家负责宁波seo深度优化平台有哪些
  • 怎么做网站后台 更新日志百度百家号官网登录
  • 网站建设亿玛酷专注seo云优化平台