|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
自己编了一下约瑟夫问题,可是每次输出完就会弹出已停止工作,不知为何,求解答~
程序如下:
#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
int data;
struct Node *next;
}NODE,*PNODE;
PNODE create();
//void traverse(PNODE);
void traverse2(PNODE);
int yue(PNODE);
//int delete_p(PNODE,int);
void delete_p2(PNODE,int);
void main()
{
PNODE p=NULL;
p=create();
delete_p2(p,3);
}
PNODE create()
{
PNODE pHead=(PNODE)malloc(sizeof(NODE));
PNODE pTail=pHead;
int len,i;
printf("请输入人数:");
scanf("%d",&len);
pTail->next=NULL;
for(i=1;i<=len;i++)
{
PNODE pNew=(PNODE)malloc(sizeof(NODE));
pNew->data=i;
pTail->next=pNew;
pNew->next=NULL;
pTail=pNew;
}
pTail->next=pHead->next;
return pHead;
}
void traverse2(PNODE ps)
{
PNODE p=ps;
p=p->next;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
void delete_p2(PNODE pHead,int pos)
{
int num=0;
int val,i;
PNODE p=pHead;
PNODE pp;
while(p->next!=NULL){
for(i=1;i<pos;i++)
{
p=p->next;
}
pp=p->next;
val=p->next->data;
p->next=p->next->next;
free(pp);
printf("%d\n",val);
// return val;
}
}
- #include<stdio.h>
- #include<stdlib.h>
- typedef struct Node
- {
- int data;
- struct Node *next;
- }NODE, *PNODE;
- PNODE create();
- //void traverse(PNODE);
- void traverse2(PNODE);
- int yue(PNODE);
- //int delete_p(PNODE,int);
- void delete_p2(PNODE, int);
- void main()
- {
- PNODE p = NULL;
- p = create();
- delete_p2(p, 3);
- }
- PNODE create()
- {
- PNODE pHead = (PNODE)malloc(sizeof(NODE));
- PNODE pTail = pHead;
- int len, i;
- printf("请输入人数:");
- scanf("%d", &len);
- pTail->next = NULL;
- for(i = 1; i <= len; i++)
- {
- PNODE pNew = (PNODE)malloc(sizeof(NODE));
- pNew->data = i;
- pTail->next = pNew;
- pNew->next = NULL;
- pTail = pNew;
- }
- pTail->next = pHead->next;
- return pHead;
- }
- void traverse2(PNODE ps)
- {
- PNODE p = ps;
- p = p->next;
- while(p != NULL)
- {
- printf("%d ", p->data);
- p = p->next;
- }
- printf("\n");
- }
- void delete_p2(PNODE pHead, int pos)
- {
- int num = 0;
- int val, i;
- PNODE p = pHead;
- PNODE pp;
- while(p->next != p) //这里
- {
- for(i = 1; i<pos; i++)
- {
- p = p->next;
- }
- pp = p->next;
- val = p->next->data;
- p->next = p->next->next;
- free(pp);
- printf("%d\n", val);
- // return val;
- }
- //这里
- printf("%d\n", p->data);
- free(p);
-
- }
复制代码
|
|