//遍历栈
void show(Seqstack*s)
{
if(s==NULL||empty(s))
{
printf("遍历失败\n");
return;
}
for(int i=s->top-1;i>=0;i--)
{
if(s->data[i]<=9)
{
printf("%d",s->data[i]);
}
else
{
printf("%c",'A'+s->data[i]-10);
}
}
printf("\n");
}
#include <stdio.h>
#include <stdlib.h>
#include "seqstack.h"
int main(int argc, const char *argv[])
{
int i;
datatype x,y;
printf("输入十进制数:");
scanf("%d",&x);
printf("输入目标进制:");
scanf("%d",&y);
Seqstack*s=create();
if(s==NULL)
return -1;
for(i=0;x!=0;i++)
{
push(s,x%y);
x/=y;
}
show(s);
return 0;
}
#include <stdlib.h>
#include <stdio.h>
#include "looplink.h"
int main(int argc, const char *argv[])
{
int i,n,m;
Looplink*l=list_create();
if(l==NULL)
return -1;
printf("输入人数:");
scanf("%d",&n);
printf("输入出圈数:");
scanf("%d",&m);
for(i=1;i<=n;i++)
{
list_insert_tail(l,i);
}
ysf(l,m);
return 0;
}
//约瑟夫环
void ysf(Looplink*l,int m)
{
int n=1;
Looplink*q=kill_head(l);
Looplink*p=q;
while(p->next!=p)
{
if(n%m==0)
{
printf("%d ",p->data);
q->next=p->next;
}
q=p;
p=p->next;
n++;
}
printf("%d\n",p->data);
}