c/c++
文章平均质量分 92
Ckyeka
Code not merely for work, but for poetry and distant horizons.
展开
-
循环链表的应用——约瑟夫问题
循环表解决约瑟夫问题约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。例如N=6,M=5,被杀掉的顺序是:5,4,6,2,3。由于需要不断循环计数来确定被杀的人,所以使用循环链表可以很好地解决这个问题。循环链表本质上就是将单链表中的尾结点指向头结点,形成一个环,所以创建的方式和单链表很相似。void initList(Linklist *L, int n) //尾插法整表创建{ Linklist p, r; //声明工作指针 (*原创 2020-09-17 16:09:26 · 642 阅读 · 1 评论 -
单链表及其实现
单链表和快慢指针链表是一种重要的数据结构,为了防止忘记单链表,写一篇博客用来复习。单链表采用结构指针来实现,首先定义一个结构体,里面存放数据和指向下一个结点的指针。typedef struct LNode{ int data; struct LNode* next;} LNode;typedef struct LNode *LinkList;实现代码#include <stdio.h>#include <stdlib.h>#include <time原创 2020-09-16 22:05:28 · 404 阅读 · 0 评论 -
交换两个int类型指针的问题
在刚刚接触c语言的时候我们一定学过一个swap函数来交换两个数void swap(int a, int b){ int temp = a; a = b; b = temp;}显然上面的函数是错的,因为传进去的a是形参,在函数内部a,b进行交换并不会影响函数外a和b的值,为了解决这个问题,我们改为传入a和b的地址进去,通过解引用将a和b的值交换,这样就可以真正意义上实现a和b的交换,当然使用引用也可以解决。void swap(int *a, int *b){ int *temp =原创 2020-12-31 22:36:07 · 546 阅读 · 0 评论