第一题:将矩阵A按“列优先”顺序存储,设每个元素占C个存储单元,已知a0,0的存储地址为D,
写出元素ai,j(0=<i<=m-1,0=<j<=n-1)的计算公式。
答:
由题目知:矩阵有 m 行,n 列,
而且矩阵是按“列优先”顺序存储的,也就是先存满一列,在存下一列。
元素 a(i,j) 表示第 j 列第 i 行的元素。
对于元素a(i,j) 所在的第 j 列, 前面还有 i 个元素(编号0,1,,...i-1),
对于元素a(i,j)所在列(第 j 列)之前的列(编号0,1,...,j-1),
每列都已经用 m 个元素填满,因此一共有:j*m 个元素。
所以,元素a(i,j)前面一共有 i+j*m 个元素。
由题目知道,每个元素占 C 个存储单元,因此 a(i,j)之前的元素一共用了:
(i + j*m ) * C 个存储单元。
a(0,0)的存储地址为D,因此轮到 a(i,j)时,它的存储地址为:D + (i + j*m)*C,
也就是从 a(0,0) 后面数个 (i + j*m)*C 存储单元后,就是 a(i,j) 的存储地址了。
###########################分割线###########################
第二题:写出稀疏矩阵X的三元组表。
X=
0 2 3 3 5 6
------------------------
0| 15 0 0 22 0 -12
1| 0 11 5 0 0 0
2| 0 0 0 -7 0 0
3| 0 0 0 0 0 0
4| 87 0 0 0 0 0
5| 0 0 28 0 0 0
所谓稀疏矩阵的三元组,
也就是根据稀疏矩阵中又很多元素的值相同(比如元素的值为0)的特点,
不存储这些元素的信息,而只存储其他不同元素的信息。
存储的信息包括:【元素坐标】,【元素的值】。
对于二维的矩阵,【元素的坐标】可以用【横坐标】,【纵坐标】确定。
【元素的值】的话,对于简单矩阵的,一般就是一个【数字】。
横坐标,纵坐标,数字,就是三元组,用[x,y,value]表示。
下面是给定的矩阵 X 的三元组:
[0,0,15],
[0,3,22],
[0,6,-12],
[1,1,11],
[1,2,5],
[2,3,-7],
[4,1,87],
[5,2,28]
###########################分割线###########################
第三题:编写程序求出顺序表中最大元素以及其在表中位置。
#include <iostream>
using namespace std;
/* 控制当同时有多个数字是最大值的时候,是否都输出
IS_MUTI_MAX_VALUE = 0 :只输出第一个最大值
IS_MUTI_MAX_VALUE = 1 :按顺序输出所有最大值
*/
const int IS_MUTI_MAX_VALUE = 0;
int main(int argc, char *argv[])
{
int data[1000],data_amount;
int i,j,max_value_index;
cout<<"输入数据个数:";
cin>>data_amount;
for(i=0,max_value_index=0;i<data_amount;i++)
{
cin>>data[i];
// 确定第一个最大值的位置
if(data[max_value_index]<data[i])
{
max_value_index = i;
}
}
if(IS_MUTI_MAX_VALUE)
{
for(i=0,j=0;i<data_amount;i++)
{
if(data[i]==data[max_value_index])
{
cout << "第"<<(++j)<<"个最大值的位置:"<<i<<",值为:"<<data[i]<<endl;
}
}
}
else
{
cout<<"最大值的位置:"<<max_value_index<<",值为:"<<max_value_index<<endl;
}
return 0;
}
/*
测试数据:
8
9 -1 5 14 -5 14 8 10
输出结果(单个最大值):
最大值的位置:3,值为:14
输出结果(多个最大值):
第 1个最大值的位置:3,值为:14
第 2个最大值的位置:5,值为:14
*/
###########################分割线###########################
第四题:编写一个程序,读入一个英文字母串,
将其中的大写字母插入第1队,小写字母插入第2队,然后分别输出这两队中的元素。
#include <iostream>
#include <stack>
// 字符串最大长度
const int MAX_STRING_LENGTH = 1000;
using namespace std;
int main(int argc, char *argv[])
{
// 大写字母队列
char queue_capital_letter[MAX_STRING_LENGTH];
int queue_capital_letter_top=-1;
// 小写字母队列
char queue_lower_letter[MAX_STRING_LENGTH];
int queue_lower_letter_top=-1;
// 英文字符串
char str[MAX_STRING_LENGTH];
cout<<"输入英文字符串:";
// 输入一行(可以有空格),按回车结束
cin.getline(str,MAX_STRING_LENGTH,'\n') ;
for(int i=0;i<str[i]!='\0';i++)
{
// 大写字母
if(str[i]>='A' && str[i]<='Z')
{
// 入队
queue_capital_letter[++queue_capital_letter_top] = str[i];
}
// 小写字母
else if(str[i]>='a' && str[i]<='z')
{
// 入队
queue_lower_letter[++queue_lower_letter_top] = str[i];
}
}
// 输出大写字母队
cout<<"大写字母队:";
for(int i=0;i<=queue_capital_letter_top;i++)
{
cout<<queue_capital_letter[i]<<" ";
}
cout<<endl;
// 输出小写字母队
cout<<"小写字母队:";
for(int i=0;i<=queue_lower_letter_top;i++)
{
cout<<queue_lower_letter[i]<<" ";
}
cout<<endl;
return 0;
}
/*
测试数据;
Hello,I am Angelfish.Who Are you ?
输出结果:
大写字母队:H I A W A
小写字母队:e l l o a m n g e l f i s h h o r e y o u
*/
温馨提示:内容为网友见解,仅供参考
C++线性结构四道题
第一题:将矩阵A按“列优先”顺序存储,设每个元素占C个存储单元,已知a0,0的存储地址为D,写出元素ai,j(0=<i<=m-1,0=<j<=n-1)的计算公式。答:由题目知:矩阵有 m 行,n 列,而且矩阵是按“列优先”顺序存储的,也就是先存满一列,在存下一列。元素 a(i,j) 表示第 j 列第...
求c++数据结构问题 1.判断有向树是以v0为根的生成树; 2.求无向图的边...
、抽象数据类型 循环队列 最优二叉树 邻接矩阵和邻接表 稳定排序和不稳定排序 2、四种逻辑结构的前驱和后继的关系 3、顺序存储结构要求存储空间是连续的、元素之间的关系用下标表示;链式存储要求存储空间是不连续的,元素之间的关系用指针表示。4、T(n)和S(n)分别表示什么?5、何谓上溢...
数据结构---线性表操作(学生成绩管理)
3, 按学号或姓名查找某学生所有成绩4, 查找某分数段所有学生信息5, 查找某班所有学生成绩6, 显示总分最高、总分最低的学生的每科成绩7, 插入某学生成绩在合适位置,不影响原来排序8, 删除某学生成绩9, 将所有重修学生信息导出到“重修表.txt”文件中保存运行环境 C++ 展开 我来答 1个回答 #热议# 《请...
C++实践题目:基本数据结构类的构造和测试.可选定一种基本数据结构实现...
比如让你写一个栈的数据结构 class STACK 。给这个类设计压栈出栈操作,并测试一下结果。
南开大学计算机科学与技术专业考研分享?
1、完全零基础的同学建议早些开始,C++和数据结构入门并不简单,因为我算是半个科班加上编程的工作经验所以尚未感觉吃力,不过一起复习的同学双非跨考计算机,据他而言前期难以理解;因为排版一般且有许多与考研无关的内容,也不推荐从刘璟老师的C++教材入手,这本书案例很多,适合在中期当作辅助参考书;最后推荐研友当时用的...
C++关于计算机基础的题……其中后两道最好能简单解释一下,谢了~_百度...
0011 0101 5写成二进制:0000 0101 所以另一个数应为xx00 x1x1 x可以为0或1,所以答案都16个 6、前序:按“根左右”的顺序 后序:按“左右根”的顺序 中序:按“左根右”的顺序 你的图有问题,无法确定B、N是左节点还是右节点 概念题自己查下书吧,回答问题的人也基本上需要查书 ...
C++中2道结构方面选择题,详细解释一下 当定义一个结构体变量时,系统...
分配的内存空间为 12 32位且4字节对齐时占用的字节数为12字节。16位2字节对齐时占用的字节数为6字节。 源代码如下:include<stdio.h> struct s{ int a; char b; float c;}; void main(){ printf("%d\\n",sizeof(struct s));}运行结果如下 ...
你好 我打算11年计算机考研 请问数据结构用C++语言可以吗?
完全可以哈,专业课综合数据结构选择题大概10道左右,这些都是考数据结构基本概念以及基本思想不需要写程序,综合题第二道是编程题,用C++是完全可以的,这种题基本不难,至少09年和10年都是考的线性的,希望你平时注意线性结构的一些基本算法和思想 ...
C++线性表,分不多。进来帮帮忙。
语法上的错误已改正,现已可以编译通过,但建立表时由于表内数据为字符型,输入时中间不能加空格,运行时如再有错误,参照着代码改,代码如下:include <iostream.h> include <stdio.h> define MaxSize 100 typedef int DataType;typedef struct {char data[MaxSize];int length;}SqList;void Create...
用C++结构体编写学生成绩系统
某班期末考试科目有高等数学,英语,线性代数,程序设计,本班有n个同学,使用结构体表示学生的信息,包括学号,姓名,和各科成绩,编写函数实现如下功能(1)建立全班学生信息(表)... 某班期末考试科目有 高等数学,英语,线性代数,程序设计,本班有n个同学,使用结构体表示学生的信息,包括学号,姓名,和各科成绩,编写函数实现...