赞
踩
- #include<bits/stdc++.h>
- //顺序表:初始化、创建()、取值、查询、插入、删除、销毁、清空、求长度、判断空、排序、修改、去重、遍历
- using namespace std;
- #define Maxsize 100
- typedef struct
- {
- string id;
- double price;
- }book;
- typedef struct
- {
- book *elem; //存储空间的基地址
- int length; //图书表中当前图书个数
- }SqList;
-
- //初始化
- void Init(SqList &l){
- //构造一个空表==>生成一个空结点or空的空间返回首地址
- l.elem = new book[Maxsize];
- if(!l.elem) exit(0);//分配空间要判断其分配是否成功
- l.length = 0;//表长设为0
- }
-
- //创建
- void Creat(SqList &l){
- //顺序表的创建类似数组,存储空间连续
- int n;
- cout<<"输入顺序表长度:";
- cin>>n;
- l.length = n;//表长为n,一般来讲有范围限制的变量可以判断其是否超出范围
- for(int i=0;i<n;i++){
- cout<<"输入第"<<i+1<<"个信息:";
- cin>>l.elem[i].id>>l.elem[i].price;
- }
- }
-
- //插入
- void Insert(SqList &l,int pos,book e){
- if(l.length==Maxsize) exit(0);//判断是否顺序表已满
- if(pos<1 || pos>l.length) exit(0);//判断插入位置是否合法
- //将插入位置之后的元素往后挪,为新元素插入腾空间
- for(int i=l.length-1;i>=pos-1;i++){
- //从后向前
- l.elem[i+1] = l.elem[i];
- }
- l.length++;//表长加一
- }
-
- //删除
- void Delete(SqList &l,int pos){
- if(l.length) exit(0); //判断表是否为空
- if(pos<1 || pos>l.length) exit(0);//判断插入位置是否合法
- //将删除元素之后的元素向前挪,覆盖前一位
- for(int i=pos;i<l.length;i++){
- //从前向后
- l.elem[i-1] = l.elem[i];
- }
- l.length--;//表长减一
- }
-
- //取值
- void GetElem(SqList l,int pos,book &e){
- //根据位置i,获取相应信息
- if(pos<1 || pos>l.length) exit(0);//判断位置是否合法
- e = l.elem[pos-1];
- }
-
- //查询
- int Search(SqList l,book e){
- //遍历找到信息后返回位置
- for(int i=0;i<l.length;i++){
- //if(l.elem[i]==e) 错误,因为存储地址不同,只是数据相同
- if(l.elem[i].id==e.id)
- return i+1;
- }
- return 0;
- }
-
- //去重
- void Dedup(SqList &l){
- //与冒泡类似
- for(int i=0; i<l.length-1 ;i++){
- for(int j=i+1;j<l.length;j++){
- if(l.elem[i].price == l.elem[j].price){
- Delete(l,i+1);
- }
- }
- }
- }
-
- //修改
- void Revise(SqList &l){
- //此处举例为修改相应位置信息
- int pos;
- cout<<"位置:";
- cin>>pos;
- if(pos<1 || pos>l.length) exit(0);//判断位置是否合法
- string n;
- double p;
- cout<<"信息:";
- cin>>n>>p;
- l.elem[pos-1].id = n;
- l.elem[pos-1].price = p;
- }
-
- //遍历
- void Traversal(SqList l){
- //与数组类似
- for(int i=0;i<l.length;i++){
- cout<<l.elem[i].id<<" "<<l.elem[i].price<<endl;
- }
- }
-
- //求长度
- int Length(SqList l){
- //返回表长
- return l.length;
- }
-
- //判断空
- bool Empty(SqList l){
- //表长为零,表空
- if(l.length==0) return 1;
- return 0;
- }
-
- //清空
- void Clear(SqList &l){
- //将表长设为0
- l.length = 0;
- }
-
- //销毁
- void Destory(SqList &l){
- //若该顺序表存在,释放存储空间
- if(l.elem) delete []l.elem;
- }
-
- //排序
- void Sort(SqList &l){
- //冒泡排序
- for(int i=0; i<l.length-1 ;i++){
- for(int j=i+1;j<l.length;j++){
- if(l.elem[i].price > l.elem[j].price){
- swap(l.elem[i],l.elem[j]);
- }
- }
- }
- }
-
-
- int main(){
- //调用函数
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。