求大神帮忙做一下关于数据结构的题目,跪谢,悬赏100分!!!
数据结构综合设计设计题目一约瑟夫环问题的实现【问题描述】设有n个人围坐在圆桌周围,现从某个位置m(1≤m≤n)上的人开始报数,报数到k的人就站出来。下一个人,即原来的第k...
数据结构综合设计
设计题目一 约瑟夫环问题的实现
【问题描述】
设有n个人围坐在圆桌周围,现从某个位置m(1≤m≤n)上的人开始报数,报数到k的人就站出来。下一个人,即原来的第k+1个位置上的人,又从1开始报数,再报数到k的人站出来。依此重复下去,直到全部的人都站出来为止。试设计一个程序求出出列序列。
这是一个典型的循环表问题,因为要不断地出列,采用顺序表或链表的存储形式都能模拟出列的情况。
设计题目二 通讯录管理问题
【问题描述】
设计一个通讯录的日常管理程序。主要包括对通讯人的录入、浏览、插入新的通讯人和删除已有通讯人。每个通讯人的资料包括编号、姓名、性别、手机号。 展开
设计题目一 约瑟夫环问题的实现
【问题描述】
设有n个人围坐在圆桌周围,现从某个位置m(1≤m≤n)上的人开始报数,报数到k的人就站出来。下一个人,即原来的第k+1个位置上的人,又从1开始报数,再报数到k的人站出来。依此重复下去,直到全部的人都站出来为止。试设计一个程序求出出列序列。
这是一个典型的循环表问题,因为要不断地出列,采用顺序表或链表的存储形式都能模拟出列的情况。
设计题目二 通讯录管理问题
【问题描述】
设计一个通讯录的日常管理程序。主要包括对通讯人的录入、浏览、插入新的通讯人和删除已有通讯人。每个通讯人的资料包括编号、姓名、性别、手机号。 展开
展开全部
约瑟夫环很简单:
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int value;
struct node *next;
}NODE;
//建立循环链表(尾插法建立)//
NODE *createlink(int number)
{
NODE *head=NULL,*p=NULL,*q=NULL;
int i=1;
head=(struct node*)malloc(sizeof(struct node));
//***建立第一个节点***//
head->value=i;
p=head;
for(i=2;i<=number;i++)
{
q=(struct node*)malloc(sizeof(struct node));
if(q==0) return 0;
p->next=q;
p=q;
p->value=i;
}
p->next=head;
return head;
}
//建立约瑟夫环
void jose(NODE *p,int number,int n)
{
int i,j,g=0;
NODE *q=NULL;
for(i=1;i<=number;i++)
{
for(j=1;j<n-1;j++)
p=p->next;
q=p->next;
//***q用来记录要删除的节点
p->next=q->next;
//****删去q节点
p=p->next;
printf("第%3d个出圈号是:%3d\n",i,q->value);
free(q);
}
printf("\n");
//
p->next=NULL;
}
//主函数
int main( )
{
int number=0;
int n=0;
printf("请输入总人数number和出拳编号n:\n");
scanf("%d",&number);
scanf("%d",&n);
NODE *head=NULL;
head=createlink(number);
jose(head,number,n);
system("PAUSE");
return 1;
}
第二个直接用单链表就可以了,写不下了,你再问一个,我给你第二个的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询