约瑟夫环前面的函数写好了 但是剩下的主函数不知道怎么写下去
#include <stdio.h>#include <malloc.h>
#define MAXSIZE 100
#define ElementType int
typedef struct
{
ElementType Data;
int Last ;
}List;
List *MakeEmpty()//建立一个空表
{
List *PtrL;
PtrL = (List*)malloc(sizeof(List));
PtrL->Last = -1;
return PtrL;
}
void Insert( ElementType X, int i, List *PtrL )
{ int j;
if ( PtrL->Last == MAXSIZE-1 ){/* 表空间已满,不能插入*/
printf("表满");
return;
}
if ( i < 1 || i > PtrL->Last+2) { /*检查插入位置的合法性*/
printf("位置不合法");
return;
}
for ( j = PtrL->Last; j >= i-1; j-- )
PtrL->Data = PtrL->Data;/*将 ai~ an倒序向后移动*/
PtrL->Data = X; /*新元素插入*/
PtrL->Last++; /*Last仍指向最后元素*/
return;
}
void Delete( int i, List *PtrL ) //删除
{ int j;
if ( i < 1 || i > PtrL->Last+1) { /*检查删除位置的合法性*/
printf("不存在第%d个元素",i);
return;
}
for (j=i ;j <= PtrL->Last+1;j++) //将ai ~ an顺序往前插入
{
PtrL->Data = PtrL->Data;
}
PtrL -> Last--;
return;
}
void main()
{
List *PtrL = MakeEmpty();
insert(1,1,PtrL);
prtinf("list的长度为:%d\n",PtrL->Last+1);
。。。。。。
}
约瑟夫环你如果想用链表去解的话建议使用循环链表,你这个Insert是干嘛的
#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
int data;
struct Node *pNext;
}NODE, *pNODE;
pNODE CreateCirculationLinkList()//创建循环链表
{
int length = 41, i;//一共有41个人
pNODE p_new, p_temp;
pNODE pHead = (pNODE)malloc(sizeof(NODE));//申请头指针的内存空间
if(pHead == NULL)
{
printf("error create!\n");
exit(EXIT_FAILURE);
}
pHead -> data = 0;
pHead -> pNext = NULL;
p_temp = pHead;
for(i = 1; i <= length; ++i)
{
p_new = (pNODE)malloc(sizeof(NODE));
if(p_new == NULL)
{
printf("error create!\n");
exit(EXIT_FAILURE);
}
p_new -> data = i;//每个人的编号为i
p_new -> pNext = NULL;
p_temp -> pNext = p_new;
p_temp = p_new;
}
p_new -> pNext = pHead -> pNext;//链表尾指向链表头
return p_new -> pNext;
}
void WhoWillSurvive(pNODE pHead, int key)
{
while(pHead -> pNext != pHead)
{
for(int i = 1; i < key; i++)
pHead = pHead -> pNext;
printf("the %d has been killed\n",pHead -> pNext -> data -1);
pHead -> pNext = pHead -> pNext -> pNext;
}
printf("the survive person is:%2d\n",pHead -> data -1);
}
int main()
{
pNODE head = CreateCirculationLinkList();
WhoWillSurvive(head, 3);
system("pause");
return 0;
} 小甲鱼的铁粉 发表于 2020-9-19 17:07
约瑟夫环你如果想用链表去解的话建议使用循环链表,你这个Insert是干嘛的
insert用来插入链表,插入42个链表,然后报数到3删除 不知道程序改怎么编
小白期望变大神 发表于 2020-9-19 17:23
insert用来插入链表,插入42个链表,然后报数到3删除 不知道程序改怎么编
你上面做的是循环链表吗? 小甲鱼的铁粉 发表于 2020-9-19 17:25
你上面做的是循环链表吗?
对
你这个不是循环链表吧。。。。。你看一下这个博客吧https://blog.csdn.net/fisherwan/article/details/25796625#comments_12969518
页:
[1]