
感觉我用循环链表的思路好像不是这题该有难度的解,不过想到链表(主要还是没想出来其他解法)很少写到今天就复习一下吧
上代码
#include <stdio.h>
#include <stdlib.h>
int num=1;
typedef struct lb
{
int b;//原先的序号
struct lb * next;
}ren;ren* kong_list(void)
{
ren *chengyuan=malloc(sizeof(ren)) ;//函数里不能直接用定义,否则出了函数就没了!!
chengyuan->b=num++;
chengyuan->next=NULL;
return chengyuan;
}int main(int argc, char *argv[])
{
//创建空链表
ren* head= kong_list();
ren* tmp=head;
int n,m,i;
scanf("%d",&n);
scanf("%d",&m);
for(i=0;i<n-1;i++)
{
tmp->next=kong_list();
tmp=tmp->next;
}
tmp->next=head;
//初始化完一个循环单向链表
for(i=1;tmp->next!=tmp ;i++)
{
if(i%10==m||i%m==0)
{
tmp->next=(tmp->next)->next;
}
else
{
tmp=tmp->next;
}
}
printf("%d",tmp->b);
// tmp=head;
// for(i=0;i<n;i++)
// {
// printf("%d",tmp->b);
// tmp=tmp->next;
// }
// 测试链表是否成功构建
return 0;
}
在写题的过程中发现对指针的使用和链表的结构有点陌生了
巩固一下做点小笔记:
- 头指针用于定位链表的开始,是链表的必须结构
- tmp是用于实现对链表每个元素的定位,若没有tmp这一指针无法实现对链表节点的控制
- 建立新的链表节点时用到了函数,需注意在函数里必须使用指针+malloc的形式创建链表节点,否则函数的生存期结束时空间就被释放了,节点就创建失败了
- 代码里用到了int num做全局变量,让对元素的计数更加方便
文章通过一道编程题展示了如何使用C语言创建和操作循环链表。作者在实现过程中复习了链表节点的创建,特别是利用malloc动态分配内存,以及指针在遍历和修改链表中的应用。代码中包含了链表的初始化、插入节点,以及按特定条件调整链表结构的逻辑。作者还提到,全局变量num用于简化节点计数,并强调了在函数内部创建链表节点的注意事项。
2511

被折叠的 条评论
为什么被折叠?



