目录
第一题:使用循环链表实现约瑟夫环
main.c代码
list_insert_tail(L,1);
list_insert_tail(L,2);
list_insert_tail(L,3);
list_insert_tail(L,4);
list_insert_tail(L,5);
list_insert_tail(L,6);
list_insert_tail(L,7);
list_insert_tail(L,8);
list_show(L);
kill_head(L);
Looplink *q=L;
int j=1;
while (j<=8)
{
for (int i=1; i<=3; i++)
{
q=q->next;
}//printf("%d\t",q->data);
Looplink *p=q->next;
printf("%d\t",p->data);
q->next=p->next;
free(p);
p=NULL;
j++;
}printf("\n");
seqstack.c中功能函数代码(写成函数)
void list_huan(Looplink *L,int n,int m)
{
for (int i=1; i<=n; i++)
{
list_insert_tail(L,i);
}int j=1;
list_show(L);
kill_head(L);
Looplink *q=L;
while (j<=n)
{
for (int i=1; i<=m-1; i++)
{
q=q->next;
}//printf("%d\t",q->data);
Looplink *p=q->next;
printf("%d\t",p->data);
q->next=p->next;
free(p);
p=NULL;
j++;
}printf("\n");
}
main.c中调用函数;
list_huan(L,8,4);
————全部代码在主页《数据结构-栈》中
第二题:使用栈的特点完成进制转换
main.c代码
int m,n;
datatype e;
printf("请示入一个十进制数:");
scanf("%d",&m);
printf("请输入要转换的进制:");
scanf("%d",&n);
while (m!=0)
{
e=m%n;
push(S,e);
m=m/n;
}
printf("进制转换后为\n");
while (S->top!=-1)
{
pop(S);
}printf("\n");
return 0;
seqstack.c中功能函数代码
————全部代码在主页《数据结构-栈》中(switch语句无法使用 换if后可以转换16进制)
//出栈,弹栈
int pop(seqStack *S)
{
// 判断逻辑
if (NULL==S || empty(S))
{
printf("出栈失败\n");
return -1;
}
//出栈逻辑
//printf("%d出栈成功\n",S->data[S->top]);
//printf("%d\t",S->data[S->top]);
if(S->data[S->top]==10)
printf("A");
else if(S->data[S->top]==11)
printf("B");
else if(S->data[S->top]==12)
printf("C");
else if(S->data[S->top]==13)
printf("D");
else if(S->data[S->top]==14)
printf("E");
else if(S->data[S->top]==15)
printf("F");
else printf("%d",S->data[S->top]);
/* switch(S->data[S->top])
{
case 10:
printf("A\t");break;
case 11:
printf("B\t");break;
case 12:
printf("C\t");break;
case 13:
printf("D\t");break;
case 14:
printf("E\t");break;
case 15:
printf("F\t");break;
defalut:
printf("%d\t",S->data[S->top]);
}*/
S->top--;
//printf("出栈\n");
return 0;
}