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<
四、 注意事项:
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
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 #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