华为笔试题目--约瑟夫环(Joseph)修改版
来源:互联网 发布:java知识 编辑:程序博客网 时间:2024/06/06 06:00
测试空间旗下大头针出品
这个可是已经运行通过了的。大家可以看看,如果有什么问题,及时交流。
#include<stdio.h>
#include<stdlib.h>
typedef struct Node *PNode;
struct Node {
int num;
int key;
PNode next;
};
typedef struct Node *Linklist;
bool InitList(Linklist *L)//建立一个空链表
{
(*L)=NULL;
return 1;
}
/*
void destroyList(Linklist *L)//撤销链表
{
PNode p;
p=*L;
free(p);
}*/
bool MakeNode( PNode *p,int e,int n)//分配由p指向的数据元素为e,编号为n,后继为空的结点,并返回TRUE,若分配失败,则返回FALSE;
{
*p=(PNode) malloc(sizeof(Node));
if(!*p) return false;
(*p)->key=e;
(*p)->num=n;
(*p)->next=NULL;
return true;
}
void Append(Linklist *L, PNode s)//将s所指向的结点链接到链表尾部
{
if(*L)
{
PNode p;
p=*L;
while(p->next!=*L) p=p->next;
p->next=s;
s->next=*L;
}
else
{
*L=s;
s->next=*L;
}
}
void DeleteNode(Linklist *L, PNode p)//从链表中删除p所指向的结点,并打印该结点的编号
{
PNode temp;
temp=*L;
while(temp->next!=p) temp=temp->next;
temp->next=p->next;
if(p==*L&&p->next!=p)
*L=p->next;
if(p->next==p)
*L=NULL;
printf("%d/t",p->num);
free(p);
}
void CreatJoseph(int n, Linklist *L)//建立一个长为n的Joseph环,n的上限为30
{
if(n>30) { printf("overflow!!/n"); exit(0); }
InitList(L);
int i;
for(i=1;i<=n;i++)
{
int k;
printf("Please input the key:");
scanf("%d",&k);
PNode p=NULL;
MakeNode(&p,k,i);
Append(L, p);
}
}
void Joseph(Linklist *L, int m)
{
int nm=m;
PNode p,temp;
temp=*L;
while(*L!=NULL)
{
p=temp;
int i=1;
while(i!=nm) { i++; p=p->next; }
nm=p->key;
temp=p->next;
DeleteNode(L,p);
}
}
int main()
{
int n,m;
printf("Please input the mumbe n and m:");
scanf("%d",&n);
scanf("%d",&m);
Linklist L;
InitList(&L);
CreatJoseph(n, &L);
Joseph(&L, m);
return 0;
}
- 华为笔试题目--约瑟夫环(Joseph)修改版
- 华为笔试题目--约瑟夫环(Joseph)
- 约瑟夫环(joseph)
- POJ 题目1012Joseph(数学,约瑟夫环)
- (约瑟夫环公式)Joseph
- Joseph (约瑟夫环(打表))
- Joseph - acm.uva.305(约瑟夫环)
- 数据结构之约瑟夫环(Joseph)
- poj 1012 -- Joseph (约瑟夫环)
- hdu 1443 joseph (约瑟夫环模拟)
- hdu 1443 Joseph (约瑟夫环)
- hdu 1443 Joseph (约瑟夫环)
- Joseph Circle(约瑟夫环)
- poj1012 -- Joseph (约瑟夫环)
- 约瑟夫环问题(joseph)
- 约瑟夫(Joseph)问题
- (华为笔试)删数 约瑟夫环问题
- 华为上机笔试题之约瑟夫环
- ATM系统实现[8]——转帐查询窗口[00原创]
- 华为笔试题目--约瑟夫环(Joseph)
- ATM系统实现[9]——事务查询窗口[00原创]
- IP电话的通讯方式与IP电话原理
- 创建静态页面的方法示例一(1)
- 华为笔试题目--约瑟夫环(Joseph)修改版
- ATM系统实现[10]——转帐窗口[00原创]
- shell基础九:awk
- AJAX中的利用POST传送数据
- ATM系统实现[11]——取款窗口[00原创]
- picfocus_add.aspx 最后界面
- 金猪宝宝--IT人士如何为宝宝起名字
- shell基础十:sed
- JavaScript 一些实用的技巧