//收回桌上牌面为t的牌
book[s.data[s.top]]=0;
q1.data[q1.tail]=s.data[s.top];
q1.tail++;
s.top--;
第21行代码 } 下方需要添加一行代码:
if(q1.head==q1.tail) break;//小哈手中的牌如果已经打完,游戏结束
//收回桌上牌面为t的牌
book[s.data[s.top]]=0;
q2.data[q2.tail]=s.data[s.top];
q2.tail++;
s.top--;
小哈win
小哈当前手中的牌是 1 6 5 2 3 4 1
桌上的牌是 3 4 5 6 2
原文
while(t != NULL)
{
if(t->next->data >a)
.....
}
修改为:
while(t!=NULL)//当没有到达链表尾部的时候循环
{
if(t->next==NULL || t->next->data > a)
//如果当前结点是最后一个节点或者下一个结点的值大于待插入数的时候插入
{
p=(struct node *)malloc(sizeof(struct node));//动态申请一个空间,用来存放新增结点
p->data=a;
p->next=t->next;//新增结点的后继指针指向当前结点的后继指针所指向的结点
t->next=p;//当前结点的后继指针指向新增结点
break;//插入完毕退出循环
}
t=t->next;//继续下一个结点
}
第20行“我们只是将枚举C改为通过A+B来算出C,……”改为:“我们只是将枚举C改为通过A+B来算出C,就将O(N3)的算法优化到了O(N2)。”