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

h5网站制作接单公司注册网站的费用多少

h5网站制作接单,公司注册网站的费用多少,合肥百度快速排名提升,最新建设招聘信息网站文章目录 前言1. 链表的概念及结构1.1在链表里#xff0c;每节“车厢”是什么样的呢#xff1f;1.2为什么还需要指针变量来保存下⼀个节点的位置#xff1f; 2. 单链表的实现1. 定义结构体(Seqlist)2. 打印函数(SLTPrint)小插曲#xff0c;创建节点函数CreateNode3. 尾插函… 文章目录 前言1. 链表的概念及结构1.1在链表里每节“车厢”是什么样的呢1.2为什么还需要指针变量来保存下⼀个节点的位置 2. 单链表的实现1. 定义结构体(Seqlist)2. 打印函数(SLTPrint)小插曲创建节点函数CreateNode3. 尾插函数 (SLTPushBack)4. 头插函数 (SLTPushFront)5. 尾删函数(SLTPopBack)6. 头删函数(SLTPopFront)小插曲pos查找函数 SLTFind7. “插入指定位置前”函数(SLTInster)8.“删除指定位置后”函数9.销毁单链表函数SLTDestroy 结语 前言 “我会定期分享我的学习经验也欢迎大家留言和交流让我们共同学习和进步感谢大家的支持让我们一起开启这段充满技术乐趣的旅程吧” 1. 链表的概念及结构 概念链表是⼀种物理存储结构上非连续、非顺序的存储结构数据元素的逻辑顺序是通过链表中的指针链接次序实现的 链表的结构跟火车车厢厢相似淡季时车次的车厢会相应减少旺季时车次的车厢会额外增加几节。只需要将火车里的某节节厢去掉/加上不会影响其他车厢每节车厢都是独立存在的。 车厢是独里存在的且每节车厢都有车门。想象⼀下这样的场景假设每节车厢的车门都是锁上的状态需要不同的钥匙才能解锁每次只能携带⼀把钥匙的情况下如何从车头走到车尾 最简单的做法每节车厢里都放⼀把下一节车厢的钥匙。 1.1在链表里每节“车厢”是什么样的呢 与顺序表不同的是链表⾥的每节车厢都是独立申请下来的空间我们称之为“结点/节点”节点的组成主要有两个部分当前节点要保存的数据和保存下一个节点的地址指针变量。 图中指针变量 plist保存的是第⼀个节点的地址我们称plist此时“指向”第⼀个节点如果我们希望plist“指向”第⼆个节点时只需要修改plist保存的内容为0x0012FFA0。 1.2为什么还需要指针变量来保存下⼀个节点的位置 链表中每个节点都是独立申请的即需要插⼊数据时才去申请⼀块节点的空间我们需要通过指针 变量来保存下⼀个节点位置才能从当前节点找到下⼀个节点。 2. 单链表的实现 1. 定义结构体(Seqlist) 在SList.h头文件中 typedef int SLNDataType; typedef struct SListNode {SLNDataType val;struct SList* next;//这里只是指针不是结构体 }SLNode;2. 打印函数(SLTPrint) 注意下述代码皆是 在SList.h头文件中定义函数 在SList.c文件中实现函数 在Test.c文件中函数测试 SeqList.h文件中 定义函数 SList.c文件中 实现函数 void SLTPrint(SLNode* phead) //打印单链表 {SLNode* cur phead;while (cur ! NULL){printf(%d-, cur-val);curcur-next;}printf(NULL); }小插曲创建节点函数CreateNode 在实现下面的插入函数之前还需要一个函数来开辟空间给新的节。 函数实现 SLNode* CreateNode(SLNDataType x) //新建节点开辟空间 {SLNode* newnode (SLNode*)malloc(sizeof(SLNode));if (newnode NULL){perror(malloc fail);exit(-1);}newnode-val x;newnode-next NULL;return newnode; }3. 尾插函数 (SLTPushBack) 定义函数 实现函数 void SLTPushBack(SLNode** pphead, SLNDataType x) //尾插 {SLNode* newnode CreateNode(x);if (* pphead NULL){*pphead newnode;}else{SLNode* tail * pphead; //找尾while (tail-next ! NULL){tail tail-next; //因为tail是局部变量而tail-next是结构体,出来作用域tail就销毁了}tail-next newnode; //所以这里把newnode赋值给tail-next} }函数测试 int main() {SLNode* plist NULL;SLTPushBack(plist, 1);SLTPushBack(plist, 2);SLTPushBack(plist, 3);SLTPrint(plist);return 0; }运行结果 4. 头插函数 (SLTPushFront) 定义函数 实现函数 void SLTPushFront(SLNode** pphead, SLNDataType x) //头插 { SLNode* newnode (SLNode*)malloc(sizeof(SLNode));newnode-next * pphead;newnode-val x;*pphead newnode; }函数测试 int main() {SLNode* plist NULL;SLTPushFront(plist,520 );SLTPushBack(plist,1);SLTPushBack(plist,1);SLTPushFront(plist,520);SLTPrint(plist);return 0; }运行结果 5. 尾删函数(SLTPopBack) 定义函数 实现函数 void SLTPopBack(SLNode** pphead) //尾删 {assert(pphead);assert(*pphead);if ((*pphead)-next NULL){free(*pphead);*pphead NULL;}else{SLNode* prev NULL;SLNode* tail *pphead;while (tail-next ! NULL){prev tail;tail tail-next;}free(tail);tail NULL;prev-next NULL;} }函数测试 int main() {SLNode* plist NULL;SLTPushFront(plist,520 );SLTPushBack(plist,1314);SLTPushBack(plist,00544);SLTPopBack(plist);SLTPrint(plist);return 0; }运行结果 6. 头删函数(SLTPopFront) 定义函数 实现函数 void SLTPopFront(SLNode** pphead) //头删 {assert(*pphead);SLNode* tail *pphead;tail tail-next;free(*pphead);*pphead tail; }函数测试 int main() {SLNode* plist NULL;SLTPushFront(plist,5201314);SLTPushBack(plist,00544);SLTPushBack(plist,44944);SLTPopFront(plist);SLTPrint(plist);return 0; }运行结果 小插曲pos查找函数 SLTFind 用来确定pos位置方便后面调用 实现函数 SLNode* SLTFind(SLNode** pphead, SLNDataType x) //pos的查找函数 {assert(pphead);SLNode* cur *pphead;while (cur){if (cur-val x){return cur;}cur cur-next;}return NULL; }7. “插入指定位置前”函数(SLTInster) 定义函数 实现函数 void* SLTInster(SLNode** pphead, SLNode* pos, SLNDataType x) //指定位置前面插入 {assert(pos);assert(pphead);assert(*pphead);SLNode* node CreateNode(x);if (*pphead pos){node-next *pphead;*pphead node;}SLNode* cur *pphead;while (cur-next ! pos){cur cur-next;}cur-next node;node-next pos; }函数测试 int main() {SLNode* plist NULL;SLTPushBack(plist,1);SLTPushBack(plist,2);SLTPushBack(plist,3);SLNode* Find SLTFind(plist, 3);SLTInster(plist,Find,123);SLTPrint(plist);return 0; }运行结果 如同在第一个值为3的节点前面插入了123 8.“删除指定位置后”函数 定义函数 实现函数 void* SLTEraseAfter(SLNode* pos) //指定位置后面删除 {assert(pos pos-next);SLNode* del pos-next;pos-next del-next;free(del); }函数测试 int main() {SLNode* plist NULL;SLTPushBack(plist,520);SLTPushBack(plist,2);SLTPushBack(plist,520);SLNode* Find SLTFind(plist, 2);SLTEraseAfter(Find);SLTPrint(plist);return 0; }运行结果 如图在第一个值为520的节点后面删除了小3 9.销毁单链表函数SLTDestroy 定义函数 实现函数 void SLTDestroy(SLNode** pphead) //销毁单链表 {assert(pphead);SLNode* cur *pphead;while (cur){SLNode* next cur;free(cur);cur next;}*pphead NULL; }测试函数 int main() {SLNode* plist NULL;SLTPushBack(plist,1);SLTPushBack(plist,2);SLTPushBack(plist,3);SLTDestroy(plist);return 0; }结语 感谢您阅读我的博客我希望您能从中获得一些启发和帮助。如果您喜欢这篇博客请分享给您的朋友也欢迎留下您的评论和反馈。您的支持是我继续分享和创作的动力。谢谢希望我们能在未来的博客中再次相见。祝您一切顺利期待与您再次相会
http://www.sadfv.cn/news/156189/

相关文章:

  • 济南做网站的中企网站如何做实名认证
  • 给企业做网站前景wordpress纯代码下载
  • 昆山哪家做网站好融媒体建设网站怎么搞
  • 动画网站制作网络营销的案例有哪些
  • 怎样经营好一个网站网站建设费用摊销年限
  • 企业手机网站设计案例高端礼品定制网站
  • 网站开发与系统开发网站头部固定
  • 做校招的网站有哪些构建网站需要会什么意思
  • 英文网站建设公司 杭州百度号码认证申诉平台
  • 西安互联网网站建设国内老牌的网站制作
  • 可在哪些网站做链接云梦网络 网站模板
  • 做电商要有网站吗设计师培训学校有哪些
  • 建筑类招聘网站有哪些qq推广网
  • 分享设计的网站如何配置iis网站
  • 蓝色经典通用网站模板html源码下载计算机哪个专业工资最高
  • 整套网站建设企业做网站的
  • 网站类网站怎么做网站建设有必要做手机端吗
  • 网址模板建站wordpress是什么写的
  • 天津网站建设公司wordpress多站点无法发布文章
  • aspcms园林绿化工程网站源码网站更换服务器
  • 建网站可以卖钱汕头哪里建网站
  • 泰州建站价格用php做一网站有哪些
  • jsp网站开发大作业企业管理培训课程学习
  • 灵璧做网站公司wordpress 数据库 地址
  • 江门网站建设系统清溪网站建设公司
  • 外贸网站建设外鞍山网站设计公司
  • 做网站侵权吗wordpress 调用discuz
  • 谷城建设局网站河南建站网站
  • 有没有医学生做课件的网站做不锈钢管网站
  • 三五做网站做一静态网站 多少钱