数组引用做形参练习(数据结构test3)
2012-09-16 14:05 Lves Li 阅读(207) 评论(0) 编辑 收藏 举报
//
// StudentTest3.cpp : 定义控制台应用程序的入口点。 /* 数据结构实验一,用顺序表实现 线性表的造作 */ #include "stdafx.h" #include <iostream> using namespace std; #define length 100 //宏定义数组长度 //定义Student结构体 struct Student{ int num; float score; }; //函数声明 void Creat(Student (&stu)[length]);//创建Student顺序表 void Display(Student (&stu)[length]);//遍历顺序表 void Insert(Student (&stu)[length]);//插入一个学生 void DelStudent(Student (&stu)[length]);//删除一个节点 //定义全局变量 int leng;//记录数组的有效长度 int main() { Student student[length]; Student (&stu)[length] = student; Creat(stu); Display(stu); cout<<"插入函数开始:"<<endl<<endl; Insert(stu); Display(stu); DelStudent(stu); Display(stu); return 0; } //定义创建函数 void Creat(Student (&stu)[length]) { cout <<"请输入你要创建学生个数:"<<endl; cin>>leng; if (leng>0&&leng<=length){ for (int i=0;i<leng;i++){ cout <<"请输入第"<<i+1<<"个学生学号:"<<endl; cin>>stu[i].num; cout <<"请输入第"<<i+1<<"个学生成绩:"<<endl; cin>>stu[i].score; } } else { //如果超出最大长度执行下面 cout<<"超出范围最多学生为"<<length<<endl; exit(-1); } } //定义遍历函数 void Display(Student (&stu)[length]){ for(int j=0;j<leng;j++){ cout<<"学号:"<<stu[j].num<<"成绩:"<<stu[j].score<<endl; } } //定义插入函数 void Insert(Student (&stu)[length]){ if (leng+1<=length){ cout <<"请输入第"<<leng+1<<"个学生学号:"<<endl; cin>>stu[leng].num; cout <<"请输入第"<<leng+1<<"个学生成绩:"<<endl; cin>>stu[leng].score; leng++;//插入成功有效长度加1 }else { //当插入一个后长度超过数组最大长度时, cout<<"超出范围最多学生为"<<length<<" 无法插入"<<endl; exit(-1); } } //定义删除函数 void DelStudent(Student (&stu)[length]){ int myNum; if (leng-1<0){//当有效长度为空时 cout <<"删除失败,共"<<leng<<endl; } else{ cout <<"请输入你要删除学生的学号:"<<endl; cin>>myNum; for (int n=0;n<leng;n++){ if (myNum==stu[n].num){ if (n<leng){ for (;n<leng;n++){ //把要删除节点以后的元素向前提 stu[n].num=stu[n+1].num; stu[n].score=stu[n+1].score; } } leng--; cout <<"删除成功。"<<endl; } if (n==leng-1&&myNum!=stu[n].num){ cout <<"未找到你要删除的学号。"<<endl; } } } }