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

网站文件内容多少与虚拟主机空间大小的关系字体设计在线生成免费

网站文件内容多少与虚拟主机空间大小的关系,字体设计在线生成免费,线上推广方式有哪几种,网站营销代理—————————————本文旨在讨论计算机知识欢迎指正——————————————— 书接上回:我们已经了解了链表如何编写与前置节点和头指针两种表示方式,下面,我们来了解进阶写法———如何实现单向循环链表。 下面,我…

—————————————本文旨在讨论计算机知识欢迎指正———————————————

        书接上回:我们已经了解了链表如何编写与前置节点和头指针两种表示方式,下面,我们来了解进阶写法———如何实现单向循环链表。

        下面,我们来梳理一下循环链表的实现方式:

        这是朴素的链表实现形式:

        这是我们理想中的循环链表实现形式:

 这就是我们大体的思路,然后,我们将要实现它:

  • 首先,我们第一个难点就是———如何来构造链表的结构体;因为我们需要循环,那么我们必须要知道尾巴在哪里,所以结构体里必须有tail这一容器,然后我们还要考虑如果每次我们都用一个迭代器去迭代遍历找尾巴tail的话,效率会非常低,我们需要一个更好的表示形式
// 定义节点结构
typedef int Element;
typedef struct _loop_node {Element val;//数据域struct _loop_node *next;//地址域,指向下一个
} LoopNode;// 定义单向循环链表的头结构
typedef struct {LoopNode header;//头结点LoopNode *tail;//尾巴的容器,相当于一个移动指针迭代器;int num;//计数器,用来遏制循环次数,防止无限循环
} LinkLoopList;

于是,笔者想到了两种结构,分别是头插法和尾插法:

1、头插法:

int insertLinkLoopHeader(LinkLoopList* link_loop, Element value) {// 1. 先有新节点LoopNode *node = malloc(sizeof(LoopNode));if (node == NULL) {return -1;}node->val = value;//新节点赋值node->next = link_loop->header.next;//插到头结点的下一个元素的前面;link_loop->header.next = node;//更新头结点在新节点的前面// 2. 判断尾指针是否需要更新if (link_loop->tail== &link_loop->header) {link_loop->tail = node;}++link_loop->num;return 0;
}

2、尾插法:

int insertLinkLoopTail(LinkLoopList* link_loop, Element value) {// 1. 先有新节点LoopNode *node = malloc(sizeof(LoopNode));if (node == NULL) {return -1;}node->val = value;node->next = link_loop->tail->next;//尾部插入link_loop->tail->next = node;//与原尾部节点衔接link_loop->tail = node;//更新尾部++link_loop->num;//更新数量return 0;
}

然后我们从头考虑初始化和声明结构体:

// 定义节点结构
typedef int Element;
typedef struct _loop_node {Element val;struct _loop_node *next;
} LoopNode;// 定义单向循环链表的头结构
typedef struct {LoopNode header;LoopNode *rear;int num;
} LinkLoopList;

这是初始化:

void initLinkLoopList(LinkLoopList* link_loop) {link_loop->header.next = link_loop->tail = &link_loop->header;//头指针和尾指针同时指向头结点link_loop->num = 0;
}

删除: 

int deleteLinkLoopList(LinkLoopList* link_loop, Element value) {LoopNode *node = &link_loop->header;while (node->next != &link_loop->header && node->next->val != value) {node = node->next;}if (node->next->val == value) {LoopNode *tmp = node->next;node->next = tmp->next;free(tmp);//释放空间,删除操作--link_loop->num;} else {printf("No %d element!\n", value);}return 0;
}

呈现操作:

void showLinkLoopList(const LinkLoopList* link_loop) {LoopNode *node = link_loop->header.next;while (node != &link_loop->header) {printf("\t%d", node->val);node = node->next;}printf("\n");
}

销毁函数:

void destroyLinkLoopList(LinkLoopList* link_loop) {LoopNode *node = link_loop->header.next;while (node != &link_loop->header) {LoopNode *tmp = node;node = node->next;free(tmp);--link_loop->num;}printf("Table %d element!\n", link_loop->num);
}

 

 最后,是测试函数:

void test01() {LinkLoopList table;initLinkLoopList(&table);for (int i = 0; i < 10; ++i) {insertLinkLoopRear(&table, i + 100);}showLinkLoopList(&table);printf("======================\n");deleteLinkLoopList(&table, 106);showLinkLoopList(&table);destroyLinkLoopList(&table);
}/* 以下是几组约瑟夫环的测试答案,包括每个被杀者的顺序编号和最后的幸存者:* 当n=5,k=2时,被杀者的顺序编号为2, 4, 1, 5,最后的幸存者是3。* 当n=10,k=3时,被杀者的顺序编号为3, 6, 9, 2, 7, 1, 8, 5, 10,最后的幸存者是4。* 当n=7,k=2时,被杀者的顺序编号为2, 4, 6, 1, 5, 3,最后的幸存者是7。* 当n=10,k=17时,最后的幸存者是3*/
void test_Joseph() {}int main() {test01();return 0;
}

————————完结撒花!!!——————希望对你有所帮助! 


文章转载自:

http://zv29doFH.qnxzx.cn
http://3jeqw7Tn.qnxzx.cn
http://ftHHuZSg.qnxzx.cn
http://fp04mAe2.qnxzx.cn
http://rAk6F0Je.qnxzx.cn
http://WT0Nxfae.qnxzx.cn
http://oWj62kSo.qnxzx.cn
http://h1Nn3BwL.qnxzx.cn
http://ZKOodu7v.qnxzx.cn
http://YS80f59n.qnxzx.cn
http://kFPxXN4x.qnxzx.cn
http://hEb2p5Cd.qnxzx.cn
http://ry0xhuPK.qnxzx.cn
http://EjPxAlMo.qnxzx.cn
http://jEBfgfQx.qnxzx.cn
http://R2By4EhF.qnxzx.cn
http://uNdOPxqj.qnxzx.cn
http://kteQxmye.qnxzx.cn
http://O5uvf6nd.qnxzx.cn
http://grLY8wvH.qnxzx.cn
http://xneK63hn.qnxzx.cn
http://79xCUQWc.qnxzx.cn
http://mspbTx7n.qnxzx.cn
http://j9W4iwdg.qnxzx.cn
http://aOsYq7YJ.qnxzx.cn
http://mU7Q7qRz.qnxzx.cn
http://JhgdrmWl.qnxzx.cn
http://SQrLDHyu.qnxzx.cn
http://CtmZ2RC9.qnxzx.cn
http://iS8g75FC.qnxzx.cn
http://www.dtcms.com/wzjs/671653.html

相关文章:

  • wordpress数据库修改后台密码优化服务
  • 九五至尊娱乐场网站珠海多语种网站制作
  • 深圳企业网站建设标准在线ps手机版网页版
  • 南京企业网站建设广州互联网
  • 免费建站网站一级在线看深圳跨境电商公司排名
  • 芜湖市住房和城乡建设厅网站首页phpcms 网站标题
  • 自己的网站怎么做跳转有没有什么专业做美业的网站
  • 哪个网站专做二手相机美食网站首页怎么做
  • 什么网站做ppt康定网站建设工作室
  • 棒的外贸网站建设笔记本做网站
  • 聊城优化网站建设国际新闻软件哪个好
  • 科技公司网站网页wordpress 站群xmlrpc
  • 偃师市住房和城乡建设局网站做网站需要学习什么
  • 漯河做网站的店如何找客户资源
  • 上传自己做的网站织梦网站地图怎么做xml
  • 毕设电商网站设计加外链网站
  • 南漳做网站如何修改用织梦做的网站的模板
  • 广东制冷设备网站建设费用国内外贸网站
  • 手机端的网站首页该怎么做大数据做网站
  • 企业网站的基本功能烟台网站建设科技公司
  • 郑州建站价格英文网站注册
  • cms管理手机网站模板下载本周最新新闻
  • 扫二维码做自己网站快捷的网站建设排行榜
  • 制作网站要花多少钱wordpress块引用美化
  • 共享ip做网站iis .htaccess wordpress
  • 淄博网站建设网站推广优化维护网站的职位叫什么
  • 动态链接做网站外链图网站模版切换
  • 上海市建设执业资格注册中心网站网络小说排行榜
  • 收费报名网站怎么做黄浦网站推广公司
  • 陕西有没有做网站普查公司安远网络推广公司