第一题:使用循环链表实现约瑟夫环
Looplink *L=list_create();
if(NULL==L)
return -1;
for(int i=1;i<=8;i++)
{
list_insert_tail(L,i);
}
Looplink *q=kill_head(L);
Looplink *p=q;
list_show2(p);
int n=8,count=1;
while(n!=0)
{
if(count==4)
{
while(p->next!=q)
{
p=p->next;
}
printf("%dt",q->data);
p->next=q->next;
free(q);
q=NULL;
q=p->next;
count=1;
n--;
}
else
{
q=q->next;
count++;
}
}
第二题:使用栈的特点完成进制转换
#include"seqstack.h" #include#include int main(int argc, const char *argv[]) { //创建栈 seqStack *S=create(); if(NULL==S) return -1; //十进制转化为n进制 int n,m,i,j=0; printf("输入要转化的十进制数:n"); scanf("%d",&m); printf("输入要转化的进制:n"); scanf("%d",&n); while(m) { i=m%n; push(S,i); m=m/n; j++; } show(S); //遍历 while(j) //出栈 { pop(S); j--; } return 0; }



