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

制作网站哪家强小兵cms个人网站模板

制作网站哪家强,小兵cms个人网站模板,Wordpress 订阅 插件,建站助手目录 一. 单链表的特点 1.1 解引用拓展 #x1f916; 二. 单链表的操作 2.1不带头节点的操作 2.1.1 打印 2.1.1.1 创建结点 2.1.2 尾插#xff08;需要二级指针#xff09; 注意形参的值不改变实参#xff1a;#xff08;精髓部分#xff09; 2.1.3 头插 2.1.4…目录 一. 单链表的特点 1.1 解引用拓展 二. 单链表的操作 2.1不带头节点的操作 2.1.1 打印  2.1.1.1 创建结点 2.1.2 尾插需要二级指针 注意形参的值不改变实参精髓部分 2.1.3 头插 2.1.4 尾删 2.1.5 头删 2.1.6 在pos前插入 2.1.7 删除pos位置  一. 单链表的特点 单链表的结点是随机的不是逻辑上相邻即物理上相邻的。用指针指向下一个节点的地址。 1.1 解引用拓展 解引用有两种* - *p的意思是是取p所指向内存的值取多少大小的值取决于结构体前的数据类型如int                         取四个字节char取一个字节。 p-的意思是 结构体用-,取决于-后面是什么值如果是-val则取data域的值-next则                       取下个结点的地址。相当于*p.next 二. 单链表的操作 单链表分为带头结点和不带头结点 ☆*: .. o(≧▽≦)o ..:*☆ 2.1不带头节点的操作 2.1.1 打印  打印不用二级指针的原因是打印不用改变外部结构体指针只用遍历打印就好了当要改变结构体指针就要用二级指针。 void SLTPrint(SLNode* phead) {SLNode* cur phead;while (cur ! NULL){printf(%d-, cur-val);cur cur-next;}printf(NULL\n); } 2.1.1.1 创建结点 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; }2.1.2 尾插需要二级指针 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-next newnode;} } 注意形参的值不改变实参精髓部分 接下来是很多人都迷迷糊糊搞不懂的地方。 当前函数定义的可以直接修改不是当前当前函数定义的无论是外部函数还是malloc出来的空间访问时都要用指针去通过地址修改。全局变量可以直接修改。 形参不不能改变实参的要传实参的地址才能改变形参。 想用形参pphead改变外部指针phead实参 先将实参的地址plist传给实参pphead这时pphead代表的是plist地址plist*pphead解引用所以*pphead代表是plist这里是要改变SNode*所以要node**。这里是要修改结构体的指针plist所以是需要结构体指针的地址plist传给*pphead。 如果要改变外部定义的结构指针SLNode*要用二级指针SLNode**。 如果要改变外部定义的结构体Node就要一级指针Node*。 2.1.3 头插 void SLTPushFront(SLNode** pphead, SLNDataType x) {SLNode* newnode CreateNode(x);newnode-next *pphead;*pphead newnode; } 2.1.4 尾删 删后n-1个不需要二级指针直接free 但是只有一个空间的时候删掉plist就成了没有指向空间的野指针所以需要将plist置空需要改变结构体指针。  void SLTPopBack(SLNode** pphead) {// 温柔的检查//if (*pphead NULL)// return;// 空assert(*pphead);// 1、一个节点// 2、一个以上节点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;*/SLNode* tail *pphead;while (tail-next-next ! NULL){tail tail-next;}free(tail-next);tail-next NULL;} } 2.1.5 头删 void SLPopFront(SLNode** pphead) {assert(pphead);if ((*pphead) NULL) {free(*pphead);*pphead NULL;}else {/**pphead (*pphead)-next;free(*pphead);*/SLNode* tmp *pphead;*pphead (*pphead)-next;free(tmp);}} 2.1.6 在pos前插入 2.1.7 删除pos位置  不带头结点的完整代码  //头文件SList.h #pragma once #includestdio.h #includestdlib.htypedef int SLDataType; typedef struct SListNode {SLDataType val;struct SListNode* next;}SLNode; void SLPrint(SLNode* phead); void SLPushBack(SLNode** pphead, SLDataType x); void SLPopBack(SLNode** pphead); void SLPushFront(SLNode** pphead, SLDataType x); void SLPopFront(SLNode** pphead);//SList.c #define _CRT_SECURE_NO_WARNINGS #includestdio.h #includestdlib.h #includeSList.h #includeassert.h //打印 void SLPrint(SLNode* phead) {assert(phead);while (phead! NULL) {printf(%d-, phead-val);phead phead-next;}printf(NULL\n); } //创建新节点SLNode* CreateNode(SLDataType x) {SLNode* newnode (SLNode*)malloc(sizeof(SLNode));while (newnode NULL) {perror(malloc fail);exit(-1);}newnode-val x;newnode-next NULL;return newnode;}//尾插 void SLPushBack(SLNode** pphead, SLDataType x) {SLNode* newnode CreateNode(x); //调用函数,实参没有数据类型if (*pphead NULL) {*pphead newnode;}else {SLNode* tail *pphead;while (tail-next ! NULL) {tail tail-next;}newnode-next NULL;tail-next newnode;}} //尾删 void SLPopBack(SLNode** pphead) {assert(*pphead);if ((*pphead)-next NULL) {free(*pphead);*pphead NULL;}else {SLNode* pre NULL;SLNode* tail *pphead;while (tail-next ! NULL) {pre tail;tail tail-next;}free(tail);tail NULL;pre-next NULL;}} //头插 void SLPushFront(SLNode** pphead, SLDataType x) {SLNode* newnode CreateNode(x);/*if (*pphead NULL) {*pphead newnode;}*/ //可以不要newnode-next *pphead;*pphead newnode; } //头删 void SLPopFront(SLNode** pphead) {assert(pphead);if ((*pphead) NULL) {free(*pphead);*pphead NULL;}else {/**pphead (*pphead)-next;free(*pphead);*/SLNode* tmp *pphead;*pphead (*pphead)-next;free(tmp);}}//Test.c 文件 #define _CRT_SECURE_NO_WARNINGS #includeSList.hvoid Test1() {SLNode* splistNULL;SLPushBack(splist, 1);SLPushBack(splist, 2);SLPushBack(splist, 3);SLPushBack(splist, 4);SLPrint(splist);SLPopBack(splist);SLPopBack(splist);SLPrint(splist);SLPushFront(splist, 1);SLPushFront(splist, 2);SLPushFront(splist, 3);SLPushFront(splist, 4);SLPrint(splist);SLPopFront(splist);SLPopFront(splist);SLPrint(splist); } int main() {Test1();return 0;}
http://www.dnsts.com.cn/news/108400.html

相关文章:

  • 微网站开发用手机制作ppt用什么软件
  • 用软件建网站wordpress分享有图片
  • asp简单的网站怎么做手机网站cms
  • 千博企业网站管理系统 下载域名申请了怎么做网站
  • 商城网站模板库人人商城网站开发
  • 网站制作的页面比例郑州专业网站优化
  • 网站开发价目表网络公司排名兴田德润
  • 国外效果超炫网站wordpress链接前面的图标
  • 实名网站空间潍坊网站制作保定公司
  • 做网站工作图seo提高关键词
  • 广告公司 网站制作做网站用什么开发好
  • 网站建设昆明房屋装修报价
  • wordpress个人站海西高端网站建设
  • 如何给网站加关键词聊天app开发报价单
  • 销售网站建设怎么做新网wordpress域名解析
  • 什么网站可以免费做护师题建筑人才网一砖一瓦
  • 在网站上做的图表怎么放到PPT里面在线免费网站建设平台
  • 途牛 招聘 网站开发公司网站建设是什么意思
  • 库尔勒网站建设哪家专业tomcat如何部署wordpress
  • 漂亮购物网站欣赏网站301跳转代码
  • wordpress 关闭adminseo基础
  • ipad做网站服务器合肥网站建设多少钱
  • 哪些企业喜欢做网站广告上上海网站设计建设
  • 百度推送 wordpress什么是seo搜索
  • 南山模板网站建设公司电商网站建设公司怎么样
  • 网站开发的目的实习报告新手做网站用什么软件
  • 家具企业网站建设石家庄网站搭建
  • 网站建设项目实施方案建设高流量网站
  • 和15岁女儿做很舒服网站湖州做网站
  • 百度生成手机网站网站备案更改