⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 huan.cpp

📁 检测简单的运算表达式
💻 CPP
字号:
#include"c1.h"
#define MAX 20
typedef struct Lnode{//单循环链
       int num;     //编号
       int data;   //密码
       struct Lnode *next;
}Lnode,*Linklist;

Linklist Link(Linklist L,int i,int a[MAX]){  //创建循环队列L
	 L=(Linklist)malloc(sizeof(Lnode));
	 L->next=NULL;
     Linklist p,q;  int j;
	 p=(Linklist)malloc(sizeof(struct Lnode));
	 p->num=1;
	 p->data=a[1];	 
	 L->next=p;  p->next=L->next; //插入第一个结点
	 for(j=2;j<=i;j++){ //陆续插入后来的结点
		 q=(Linklist)malloc(sizeof(struct Lnode));
		 q->num=j;   q->data=a[j]; 
		 p->next=q;  p=q;  q->next=L->next;
	 }
	 return L;
 }
void Trave(Linklist L,int a){//输出队列信息
	Linklist p=L;  int i;
	for(i=0;i<a;i++){
		p=p->next;
		printf("第%d个人的密码是 %d\n",p->num,p->data);
	}
    printf("建环正确完成--可以准备出列\n");
}
void Output(Linklist L,int a){  //出列
	Linklist p=L,q;    int j=0,e=0; 
    for(;j<a-1;j++)	p=p->next;  //寻找出列结点,并令p指向其前趋         
	q=p->next;      printf("%d\t",q->num);
	e=q->data;      p->next=q->next;
	if(q==L->next)	L->next=p->next;
	else L->next=L->next;
    free(q);	   	
	Output(p,e); //递归出列
}
void main()
{
	int i,n,m[MAX];  
	Linklist L;
    printf("输入n值(<=20): ");
	scanf("%d",&n);
	printf("输入初始密码 m0: ");
 	scanf("%d",&m[0]);
	for(i=1;i<n+1;i++){//获取每个人的信息
		printf("输入第%d个人的密码:",i);
		scanf("%d",&m[i]);
	}
	L=Link(L,n,m);
	Trave(L,n); //输出队列信息
	printf("出列顺序是: ");
	Output(L,m[0]); //出列
    printf("\n\n约瑟夫问题解决!\n");
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -