两道数据结构习题(高分)

来源:百度知道 编辑:UC知道 时间:2024/06/08 06:11:37
1. 以顺序表为存储结构,在300000个任意排序的数据中选择前100个最大值。
2. 以二叉链为存储结构,写一算法求二叉树的叶子结点个数。
对了追加分

我觉得你可以看看书,自己就能编出来了啊,干嘛不自己想一下,再把疑问摆出来大家探讨啊

这个问题我也不会,不过,2分到手!

第一题

#include <string>
using namespace std;

int FindMax(char num);
char array[300000]; //顺序表未标明结构,就用char了
char result[101]; //结果,从大至小保存。最后一个不使用,为后面的处理流出空间(防止溢出)
int i_account;

int main()
{
// …… //省略输入部分,直接处理
int i;
int i_Pos; //记录下插入的位置
result[0] = array[0]; //第一个放入结果数组,便于处理
i_account = 1;
for(i = 1; i < 300000; i++)
{
i_Pos = FindMax(array[i]); //
if(i_Pos != -1)
{
memmove(result+i_Pos+1, result+i_Pos, i_account - i_Pos);
result[i_Pos] = array[i];
}
}
return 0;
}

int FindMax(char num)
{
int i;
for(i = 0; i < i_account; i++)
{
if(num < result[i])
{
continue;
}
else if(num == result[i])
{
return -1; //次数,已存在数组中,没有必要插入
}