Please help to make a code of the josephus problem in C using the circular linked list.

I have made this code but it seems like there is alot of change to be made to make it accurate and right.

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>

struct node{
	char info[25];
	struct node *NEXT;
};
struct node *HEAD;
struct node *TAIL;
char name[25];

void myInit()
{
	HEAD=(struct node *) malloc(sizeof(struct node));
	TAIL=(struct node *) malloc(sizeof(struct node));
	HEAD->NEXT=TAIL;
	TAIL->NEXT=HEAD;
}

void myInsert()
{
	struct node *TEMP;
	TEMP=(struct node*)malloc(sizeof(struct node));
	strcpy(TEMP->info,name);
	TEMP->NEXT=HEAD->NEXT;
	HEAD->NEXT=TEMP;
}

void myRemove()
{
	struct node *TEMP;
	TEMP=(struct node*) malloc(sizeof(struct node));
	TEMP=HEAD->NEXT;
	HEAD->NEXT=HEAD->NEXT->NEXT;
	strcpy(name,TEMP->info);
}

void main()
{
	clrscr();
	int numSol, counter;
	myInit();
	printf("Enter the number of soldier: ");
	scanf("%d",&numSol);
	for(int i=1;i<=numSol; i++)
	{
		printf("Pls. Type a Name: ");
		scanf("%s",&name);
		myInsert();
	}
	printf("Value for Counter: ");
	scanf("%d",&counter);

	for(int j=1;j<=numSol;j++)
	{
	for(int k=1;k<=counter;k++)
	{
	myRemove();
	if(k==counter){
	puts(name);
	getch();}
	}
	}
}

Thanks for your message. I totally appreciate it. Hope you could help me. Thanks!!

1. You are making memory leaks all over the place. When you operate with dynamic memory allocation you have the responsibility to free every part of memory that you don't use.

2. Instead of void main() always write int main() 3. myRemove() isn't working. Why are you creating a new memory space for temp? And then when you have created new mem space, TEMP->info is empty!

sci@phy, did you really understand the problem?the answers you have written is vague and may be equal to knowledge of a child in programming. If you can not answer properly, do not answer it just to show that you are an intellectual.

Comments
This thread is from 2008.
constructive criticism the name of the game

sci@phy, did you really understand the problem?the answers you have written is vague and may be equal to knowledge of a child in programming. If you can not answer properly, do not answer it just to show that you are an intellectual.

Is there a reason you resurrected a 4-year old thread just to scold someone that hasn't been here sin Oct 13th, 2010?

Let sleeping threads die...

What is the Josephus problem?

Clickity Click

Edited 4 Years Ago by WaltP: n/a

This article has been dead for over six months. Start a new discussion instead.