@TOC使用链栈完成约瑟夫环 C语言 数据结构
转载标明出处
建议使用循环单链表完成!!!!
思路
使用链栈和单链表存储数据
先将数据出栈,再存到单链表中(尾插和头插都可,这里使用尾插)(单链表和链栈在数据储存形式上没有区别,区别在于操作方法)遇到被杀掉的那个人则只出栈,不尾插。最后将单链表赋给链栈,单链表清空。以此循环,直到只剩下一个人
代码
#include <stdio.h>
typedef int Datatype;
typedef struct SNode{
Datatype data;
struct SNode *next;
}SNode;
SNode* InitStack()
{
SNode* S;
S = (SNode*)malloc(sizeof(SNode));
S->data = NULL;
S->next = NULL;
return S;
}
int IsEmpty(SNode* S)
{
if (S->next == NULL)
return 1;
else
return 0;
}
void Push(SNode* S, Datatype e)
{
SNode* p;
p = (SNode*)malloc(sizeof(SNode));
p->data = e;
p->next