c语言猴子选大王指针,C语言描述怎么用循环队列实现猴子选大王
匿名用戶
1級
2016-12-16 回答
#include?
#include?
typedef?struct?node//定義鏈表節(jié)點(diǎn)類型
{
int?data;
struct?node?*next;
}linklist;
int?main()
{
int?i,?n,?k,?m,?total;
linklist?*head,?*p,?*s,?*q;
printf("請輸入猴子總數(shù):");//?讀入問題條件
scanf("%d",?&n);
printf("請輸入開始計(jì)數(shù)的猴子數(shù):");
scanf("%d",?&k);
printf("請輸入數(shù):");
scanf("%d",?&m);
head?=?(linklist*)malloc(sizeof(linklist));???//?創(chuàng)建循環(huán)鏈表,頭節(jié)點(diǎn)也存信息
p?=?head;
p->data?=?1;
p->next?=?p;
for?(i?=?2;?i?<=?n;?i++)?//初始化循環(huán)鏈表
{
s?=?(linklist*)malloc(sizeof(linklist));
s->data?=?i;
s->next?=?p->next;
p->next?=?s;
p?=?p->next;
}
p?=?head;
for?(i?=?1;?i?
{
p?=?p->next;
}
total?=?n;?????????//?保存節(jié)點(diǎn)總數(shù)
printf("\n失序:");
q?=?head;
while?(total?!=?1)????//?只剩一個(gè)節(jié)點(diǎn)時(shí)停止循環(huán)
{
for?(i?=?1;?i?
{
p?=?p->next;
}
printf("[%d]?",?p->data);???//?打印要?jiǎng)h除的節(jié)點(diǎn)序號
while?(q->next?!=?p)????//?q?指向?p?節(jié)點(diǎn)的前驅(qū)
{
q?=?q->next;
}
q->next?=?p->next;???//?刪除?p?節(jié)點(diǎn)
s?=?p;????????//?保存被刪除節(jié)點(diǎn)指針
p?=?p->next;??//?p?指向被刪除節(jié)點(diǎn)的后繼
free(s);?????//?釋放被刪除的節(jié)點(diǎn)
total--;?????//?節(jié)點(diǎn)個(gè)數(shù)減一
}
printf("\n\n?猴子王是第??[%d]?只\n\n",?p->data);//?打印最后剩下的節(jié)點(diǎn)序號
free(p);
system("pause");
return?0;
}
總結(jié)
以上是生活随笔為你收集整理的c语言猴子选大王指针,C语言描述怎么用循环队列实现猴子选大王的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qgis折点打断_arcgis在折点处打
- 下一篇: linux分区后盘符找不到,为什么我的磁