实验一C(3)

2019-05-24 14:45

cout<<\请输入第\个学生成绩: \ cin>>temp->score; if(i != n) {temp->next = new node; temp = temp->next; } } temp->next = NULL; return head; }

//display函数

void display(const node* head) { int i = 1; int sum = 0; int max = head->score; cout<score; if(head->score > max) max = head->score; head = head->next; i++; } cout<<\平均分:\ cout<<\最高分:\}

四、 注意事项:

1. 在磁盘上创建一个目录,专门用于存储数据结构实验的程序。 2. 数据个数和数据从键盘输入,每个结点包括学号和成绩。

实验四 栈的基本操作

一、 实验目的:

掌握栈的基本操作:初始化栈、判栈为空、出栈、入栈等运算。 二、实验要求:

1. 认真阅读和掌握本实验的算法; 2. 上机将本算法实现;

3. 保存和打印出程序的运行结果,并结合程序进行分析。 三、实验内容:

利用栈的基本操作实现将任意一个十进制整数转化为R进制整数。 算法为:

1. 定义栈的顺序存取结构

11

2. 分别定义栈的基本操作(初始化栈、判栈为空、出栈、入栈等) 3. 定义一个函数用来实现上面问题: 十进制整数X和R作为形参 初始化栈

只要X不为0重复做下列动作 将X%R入栈 X=X/R

只要栈不为空重复做下列动作

栈顶出栈 输出栈顶元素 四、 注意事项:

1. 在磁盘上创建一个目录,专门用于存储数据结构实验的程序。 //Filename:exp4.cpp //date:05-10

#include #define MAXSIZE 100 #include struct stack{

int data[MAXSIZE]; int top; };

void init(struct stack *s){ s->top=-1; }

int empty(struct stack *s){ if(s->top==-1) return 1; else

return 0; }

void push(struct stack *s,int i){ if(s->top==MAXSIZE-1){ printf(\ return; }

s->top++;

s->data[s->top]=i; }

int pop(struct stack *s){ if(empty(s)){

printf(\ return -1; }

return(s->data[s->top--]); }

void trans(int num){ struct stack s; int k; int(&s); while(num){ k=num; push(&s,k); num=num/16; }

while(!empty(&s)){ k=pop(&s); if(k<10)

printf(\

12

else

printf(\ }

printf(\}

void main(){ int num; int r;

printf(\ scanf(\ //clrscr();

printf(\ scanf(\ while(num!=-1){ trans(num);

scanf(\ } }

实验五 数组的基本操作

一、实验目的:

回顾c++语言中数组的定义和基本应用; 二、 实验要求:

1. 认真阅读和掌握本实验的程序。 2. 上机运行本程序。

3. 保存和打印出程序的运行结果,并结合程序进行分析。 三、 实验内容:

有M个学生,学习N门课程,已知所有学生的各科成绩, 编程:分别求每个学生的平均成绩和每门课程的平均成绩。 四、 注意事项:

1. 在磁盘上创建一个目录,专门用于存储数据结构实验的程序。 //Filename:exp5.cpp //date:05-17 #define M 5 #define N 4 #include \void main() { int i,j;

static float score[M+1][N+1]={{78,85,83,65}, {88,91,89,93}, {72,65,54,75},{86,88,75,60}, {69,60,50,72}}; for(i=0;i

{for(j=0;j

score[i][N] /= N; }

for(j=0;j

13

score[M][j] /= M; //clrscr();

printf(\学生编号 课程1 课程2 课程3 课程4 个人平均\\n\for(i=0;i

{ printf(\学生%d\\t\ for(j=0;j

printf(\ printf(\ }

for(j=0;j<8*(N+2);j++) printf(\

printf(\课程平均\ for(j=0;j

printf(\ printf(\ getchar(); }

阵运算

一、实验目的:

掌握三元组法存储稀疏矩阵的方法及相关的基本操作。 二、 实验要求:

1. 认真阅读和掌握本实验的程序。 2. 上机运行本程序。

3. 保存和打印出程序的运行结果,并结合程序进行分析。 三、实验内容:

编写一个程序实现下列目标。 1,用三元组法存放稀疏矩阵; 2,求出矩阵相乘结果; 3,输出结果矩阵。 //Filename:exp6.cpp //date:05-24

#include #include #define OK 1 #define ERROR 0

#define MAXSIZE 100 //最多非0元素的个数 #define MAXR 50 //rpos所能处理的最大行数

#define MAXC 50 //系数矩阵相乘时,保留临时列结果的数组temp[MAXC] typedef struct NODE{ //定义稀疏矩阵结点 int i; int j; int data; } Node;

typedef struct MATRIX{ //定义稀疏矩阵(可以快速访问) int mu, nu, tu;

Node matrix[MAXSIZE+1]; int rpos[MAXR+1]; } Matrix;

int CreatSMatrix( Matrix* M ); //创建一个矩阵(由用户输入原始矩阵,转化为稀疏矩阵方式

14

实验六 稀疏矩

储存)

int Print( Matrix M ); //打印一个稀疏矩阵

int Mul_SMatrix( Matrix M, Matrix N, Matrix *Q); //两个稀疏矩阵相乘 int main() { Matrix A1, A2, A3; //定义矩阵 CreatSMatrix( &A1 ); CreatSMatrix( &A2 ); if( A1.nu==A2.mu ) { //判断能否相乘 Mul_SMatrix( A1, A2, &A3 ); printf(\两矩阵相乘得:\\n\ Print(A3); }

system(\ return 0; }

//构建稀疏矩阵

int CreatSMatrix( Matrix* M ) { int temp, i,j;

printf(\输入矩阵的行列数:\ scanf(\ M->tu=0;

printf(\按行序输入矩阵:\\n\ for( i=1; i<=M->mu; i++) { M->rpos[i]=M->tu+1; //每计算完一行,给rpos[]赋值 for( j=1; j<=M->nu; j++) { scanf(\ if( temp ) { //非0值保存 M->matrix[M->tu+1].i= i; M->matrix[M->tu+1].j= j;

M->matrix[M->tu+1].data=temp; M->tu++; } } }

return OK; }

//打印稀疏矩阵 int Print( Matrix M) { int i;

if(M.tu==0) { printf(\空矩阵\\n\\n\ return ERROR; }

printf(\ for( i=1; i<=M.tu; i++ ) printf(\ }

//稀疏矩阵相乘

int Mul_SMatrix( Matrix M, Matrix N, Matrix *Q) {

15


实验一C(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:vmware vsphere 6.7虚拟化配置手册

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: