本人新学数据结构,又有同学让我帮忙做这些题目,现在又忙于考试,所以请众高手帮忙,谢谢
1:关于线性表的建立,插入,删除和修改的。要求:设有n个人围坐一圈,现丛某个人开始报数,数到m的人出列,接着从出列的下一个人开始重新报数,数到m的人又出列,如此下去,直到所有人都出列为止,试设计确定他们的出列次序序列的程序
2:设停车场内只有一个可停放n辆汽车的狭长通道。
3:排序:给出n个学生的考试成绩表,每条信息由姓名和分数组成,试设计一个算法并实现:(1)按分数高低次序,打印出每个学生在考试中获得的名次,分数相同的为同一名次;(2)按名次列出每个学生的姓名和分数。至少采用3种不同的排序方法
4:是查找极其算法分析:1设计一个读入一串整数构成一棵二叉排序树的算法并实现。2对该排序二叉树进行中序遍历,输出其结果
5:是求带权图的最小生成树:若要在n个城市之间建设通信网络,只需要假设n-1条线路即可。如何以最低的经济代价建设这个网络,是一个带权图的最小生成树问题。设图的顶点树不超过30个,图中的权值设成小于100的整数,可利用pascal语言提供的随即函数产生
5 个解决方案
#1
// 1. 问题 josephus
#include <stdio.h>
void josephus(int[], int, int, int);
#define count 18
void main()
{
int a[count];
int i;
// 1-9, start from 1, if k=5 pop.
josephus(a, count, 2, 5);
for(i=0; i<count; i++)
printf("%d ", a[i]);
printf("\n");
}
void josephus(int a[], int n, int s, int m)
{
int i, j;
int k;
int tmp;
for(i=0; i<n; i++) a[i] = i+1;
k=s-1;
for(i=n; i>1; i--)
{
if(k==i) k=0;
k=(k+m-1)%i;
if(k!=i-1)
{
tmp = a[k];
for(j=k; j<i-1; j++)
a[j] = a[j+1];
a[i-1] = tmp;
}
}
for(i=0; i<n/2; i++)
{
tmp = a[i];
a[i] = a[n-i-1];
a[n-i-1] = tmp;
}
}
#include <stdio.h>
void josephus(int[], int, int, int);
#define count 18
void main()
{
int a[count];
int i;
// 1-9, start from 1, if k=5 pop.
josephus(a, count, 2, 5);
for(i=0; i<count; i++)
printf("%d ", a[i]);
printf("\n");
}
void josephus(int a[], int n, int s, int m)
{
int i, j;
int k;
int tmp;
for(i=0; i<n; i++) a[i] = i+1;
k=s-1;
for(i=n; i>1; i--)
{
if(k==i) k=0;
k=(k+m-1)%i;
if(k!=i-1)
{
tmp = a[k];
for(j=k; j<i-1; j++)
a[j] = a[j+1];
a[i-1] = tmp;
}
}
for(i=0; i<n/2; i++)
{
tmp = a[i];
a[i] = a[n-i-1];
a[n-i-1] = tmp;
}
}
#2
別人請你做 是自己要做得吧。。。
嘿嘿
嘿嘿
#3
欢迎有志于在C++方面展的程序员光临我们的QQ群4399793
有问题我们一起解决,谢谢
有问题我们一起解决,谢谢
#4
好好学习,天天向上!
#5
谢谢了
不过的确是别人找我做的,我也有一些不会做,谢谢了
不过的确是别人找我做的,我也有一些不会做,谢谢了
#1
// 1. 问题 josephus
#include <stdio.h>
void josephus(int[], int, int, int);
#define count 18
void main()
{
int a[count];
int i;
// 1-9, start from 1, if k=5 pop.
josephus(a, count, 2, 5);
for(i=0; i<count; i++)
printf("%d ", a[i]);
printf("\n");
}
void josephus(int a[], int n, int s, int m)
{
int i, j;
int k;
int tmp;
for(i=0; i<n; i++) a[i] = i+1;
k=s-1;
for(i=n; i>1; i--)
{
if(k==i) k=0;
k=(k+m-1)%i;
if(k!=i-1)
{
tmp = a[k];
for(j=k; j<i-1; j++)
a[j] = a[j+1];
a[i-1] = tmp;
}
}
for(i=0; i<n/2; i++)
{
tmp = a[i];
a[i] = a[n-i-1];
a[n-i-1] = tmp;
}
}
#include <stdio.h>
void josephus(int[], int, int, int);
#define count 18
void main()
{
int a[count];
int i;
// 1-9, start from 1, if k=5 pop.
josephus(a, count, 2, 5);
for(i=0; i<count; i++)
printf("%d ", a[i]);
printf("\n");
}
void josephus(int a[], int n, int s, int m)
{
int i, j;
int k;
int tmp;
for(i=0; i<n; i++) a[i] = i+1;
k=s-1;
for(i=n; i>1; i--)
{
if(k==i) k=0;
k=(k+m-1)%i;
if(k!=i-1)
{
tmp = a[k];
for(j=k; j<i-1; j++)
a[j] = a[j+1];
a[i-1] = tmp;
}
}
for(i=0; i<n/2; i++)
{
tmp = a[i];
a[i] = a[n-i-1];
a[n-i-1] = tmp;
}
}
#2
別人請你做 是自己要做得吧。。。
嘿嘿
嘿嘿
#3
欢迎有志于在C++方面展的程序员光临我们的QQ群4399793
有问题我们一起解决,谢谢
有问题我们一起解决,谢谢
#4
好好学习,天天向上!
#5
谢谢了
不过的确是别人找我做的,我也有一些不会做,谢谢了
不过的确是别人找我做的,我也有一些不会做,谢谢了