数据结构0721作业-洪庆乐

第一题:使用栈的特点完成进制转换:

#include "seqstack.h"

int main(int argc, const char *argv[])
{
	seqStack *S = create();
	int m , n;
	printf("请输入你要转换的十进制:");
	scanf("%d",&m);
	printf("你要转换成几进制:");
	scanf("%d",&n);

	int a = m;

	while(m != 0)
	{
		int y = m % n;
		push(S,y);
		m = m / n;
	}
	printf("%d的%d进制=",a,n);
	pop(S);
	return 0;
}

实现结果:

ubuntu@ubuntu:stack$ ./a.out 
创建成功
请输入你要转换的十进制:10
你要转换成几进制:2
入栈成功
入栈成功
入栈成功
入栈成功
10的2进制=1010
ubuntu@ubuntu:stack$ ./a.out 
创建成功
请输入你要转换的十进制:100
你要转换成几进制:2
入栈成功
入栈成功
入栈成功
入栈成功
入栈成功
入栈成功
入栈成功
100的2进制=1100100

第二题:使用循环链表实现约瑟夫环:

#include "looplink.h"
int main(int argc, const char *argv[])
{
	
	Looplink *L = listCreat();
	if(NULL == L)
	{
		return -1;
	}
/*
	listInsertTail(L,10);
	listInsertTail(L,7);
	listInsertTail(L,5);
	listInsertTail(L,3);
	listShow(L);	

	listDeleteTail(L);
	listShow(L);	

	Looplink *S = killHead(L);
	L=NULL;
	listShow2(S);	
*/

	int m,n;
	printf("请输入几个人围成圈:");
	scanf("%d",&m);
	printf("喊到几出圈:");
	scanf("%d",&n);
	
	//将1-m存入链表
	for(int i = 1;i <= m;i++)
	{
		listInsertTail(L,i);
	}

	//去头
	Looplink *S = killHead(L);

	//遍历
	listShow2(S);

	printf("形成的新的序列为:");
	Looplink *q = S;
	if(n == 1){
		listShow2(S);
	}else{
	for(int i =1;i < m;i++)
	{
		for(int j = 1;j < n-1;j++)
		{
			q = q->next;
		}
		
		Looplink *p = q->next;
		printf("%d\t",p->data);

		q->next = p->next;
		free(p);
		p = NULL;		
		q = q->next;	
	}

	printf("%d",q->data);
	printf("\n");
	}
	return 0;
}

结果展示:

ubuntu@ubuntu:looplink$ ./a.out 
创建成功
请输入几个人围成圈:8
喊到几出圈:4
插入成功
插入成功
插入成功
插入成功
插入成功
插入成功
插入成功
插入成功
删头成功
链表元素分别是:1	2	3	4	5	6	7	8	
形成的新的序列为:4	8	5	2	1	3	7	6

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值