已经修改,运行通过:(问题出在头结点被局猜释放后,头指针没有正确调整)
#include <stdio.h>
#include <malloc.h>
//构建结构体
typedef struct Node
{
int Num
struct Node *next
}JosephNode, *PNode, *HeadNode
int JosephInit(HeadNode *h)
{
if(!h)
{
printf("链表初始化错误!\n")
return 0
}
(*h)->态悄next = (*h)//循环单链表
return 1
}
//单链表插入
int JosephInsert(JosephNode *h, int m, int x)
{
int i = 1
PNode p = h,q
if(m == 1)
{
p->Num = x
p->next = p
return 1
}
while(i <m-1)
{
p = p->next
i++
}
q = (PNode)malloc(sizeof(JosephNode))
q->Num = x
q->next = p->next
p->next = q
return 1
}
//遍历
void TraverseList(HeadNode h, int m)
{
int i = 0
PNode p = h
while(i <m)
{
printf(" %d", p->Num)
p = p->next
i++
}
}
//出局判定
int JosephDelete(HeadNode *h, int n, int k, int m)
{
int i
PNode p = *h,q
while(n >m+1)
{
for(i = 1i <k-1i++)
p = p->next
q = p->next
p->next = q->next
if(*h==q)*h=q->next
free(q)
p = p->next
n--
}
return 1
}
int main()
{
int i//计数数字
int n//总人数
int k//出局数字
int m//存活的朋友个数
printf("假设n个人围成一圈,其桐闭型中有m个你的朋友不想死掉,从第一个开始报数,第k个将被杀掉。为了保护自己和m个朋友,安排自己和m个朋友的初始位置。\n\n")
printf("参与人数:")
scanf("\t%d", &n)
printf("出局数字:")
scanf("\t%d", &k)
printf("朋友数量:")
scanf("\t%d", &m)
HeadNode h = ((HeadNode)malloc(sizeof(JosephNode)))//初始化头结点
JosephInit(&h)//初始化单链表
for(i = 0i <= ni++)//编号插入
JosephInsert(h, i, i)
JosephDelete(&h, n, k, m)//出局循环
printf("\n安全的位置编号为:")
m++
TraverseList(h,m)//遍历剩余位置编号
printf("\n")
return 0
}
正好之前写过基础的察雀约瑟夫环,稍作修改就可以满足你的题目
#include <stdio.h>#include <stdlib.h>
typedef struct _node {
int id
int key
struct _node *next
} Linklist
int main() {
int n, m
scanf("%d %d", &n, &m)
int i, count = 0
Linklist *head = (Linklist*)malloc(sizeof(Linklist)), *tail = head
head->id = 1
scanf("%d", &head->key)
head->next = head
for(i = 2 i <= n i++) {
Linklist *p = (Linklist*)malloc(sizeof(Linklist))
p->id = i
scanf("%d", &p->key)
p->next = head
tail->next = 世没败p
tail = p
}
while(head != tail) {
if(++count % m) {
tail = head
} else {
m = head->key
count = 0
printf("%d "搜颤, head->id)
tail->next = head->next
free(head)
}
head = tail->next
}
printf("%d\n", head->id)
free(head)
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)