c语言队列,解密卡住了求助

本文介绍了一种通过特定算法解密电话号码的方法。该方法使用队列数据结构,按照特定规则处理一系列数字来还原原始电话号码。代码实现包括队列的基本操作及解密流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<stdio.h>
#include<stdlib.h>
#define Maxsize 100
/* 向计算机专业的同学要电话号码,他(她)不会直接给你的,原因你懂的。他(她)会告诉你一串加密过的数字,同时告诉你解密的规则。规则是这样的:首先将第1个数字删除,紧接着将第2个数放到这串数的末尾,再将第3个数删除并将第4个数放到这串数的末尾…,直到剩下最后一个数,把这个数也删除。按删除的顺序将删除的数连在一起,就是电话号码了。
/
//定义一个队结构体
/

先入队把所有元素入队 队头出队,新的队头往后移一下然后再出队队尾增加,队头删除
*/
typedef struct Queue
{
int queue[Maxsize];
int front,rear;
}queue;
//创建队
void inQueue(queue *q)
{
//队头尾都初始化为空
q->queue==NULL;
q->front=0;
q->rear=0;

}
//入队
int addQueue(queue *q,int x)
{
//如果队尾加1模去最大长度等于队头
if((q->rear+1)%Maxsize==q->front)
return 0;
q->rear=(q->rear+1)%Maxsize;
q->queue[q->rear]=x;
return 1;
}
//出队
int outQueue(queue *q)
{
if(q->front == q->rear)
return NULL ;
q->front =( q->front+ 1) % Maxsize ;
return q->queue[q->front] ;
}

//判断队是否为空
int isempty(queue *q)
{
if(q->front == q->rear)
return 1 ;
return 0 ;
}
/*读取队头元素
int getQueue(queue *q)
{
if(q->front== q->rear )
return NULL ;
return q->queue[(q->front+1) % Maxsize] ;
}
*/
//写一个方法解密
int DecQueue(queue *q,queue *p)
{
//头尾有了
if((NULLq)&&(NULLp))
{
return 0;
}
int i=0;
while(q->frontrear)
{
printf(“头%d\n”,q->front);
printf(“尾%d\n”,q->rear);
printf(“头%d\n”,p->front);
printf(“尾%d\n”,p->rear);

	            char temp=outQueue(q);
	            printf("头%d\n",q->front);
	             printf("头%c\n",q->queue[q->front]);
	            printf("第%d个元素%c\n",i,temp); 
	            
               	addQueue(p,temp);
               	printf("添加元素进去\n"); 
               	printf("%c",q->queue[q->rear-1]);
               	for(int i=0;i<q->rear;i++)
               	{
               		q->rear=0;
               		i++;
				   }
               	q->queue[q->rear]
            	q->queue[q->rear]=q->queue[q->front]; 
             	//把第一个值给新的队
             	
 				//覆盖掉队 
 }

}

//main
int main()
{
//传参数
struct Queue *q,*p;
q=(struct Queue *)malloc(sizeof(struct Queue)) ;
p=(struct Queue *)malloc(sizeof(struct Queue)) ; //分配空间
char ch;
inQueue(q);
inQueue§;
printf(“请输入你的数字\n”);
ch=getchar();
//当#号结束
while(ch!=’#’)
{
addQueue(q,ch);
printf(“入队%c\n”,ch);
//printf(“下一个数\n”);
ch=getchar();
}
DecQueue(q,p);
while(!isempty§){
int temp=outQueue§;
printf(“解密%c”,temp);
}

return 0;

}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值