颓了好几天了,今天再写一篇。
因为结构体和指针都学了嘛,趁热打铁学学数据结构
今天学的是顺序表的基本操作,直接上代码。对应王道P19页的题目
#include<iostream>
#define MaxSize 50
using namespace std;
/*
//顺序存储类型
struct SqList{
int data [MaxSize];//元素
int Length;//长度
};*/
struct SeqList{//动态存储
int *data;
int length;//最大容量和当前长度
};
bool ListInsert(SeqList &L,int i, int e){//插入操作
if(i<1||i>L.length+1)
return false;
if(L.length>=MaxSize)
return false;
for(int j=L.length;j>=i;j--)
L.data[j]=L.data[j-1];
L.data[i-1]=e;
L.length++;
return true;
}
bool ListDelete(SeqList &L,int i,int &e){
if(i<1||i>L.length)
return false;
e=L.data[i-1];
for(int j=i;j<L.length;j++)
L.data[j-1]=L.data[j];
L.length--;
return true;
}
int LocateElem(SeqList L,int e){
int i;
for(i=0;i<L.length;i++)
if(L.data[i]==e)
return i+1;
return 0;
}
int deletemin(SeqList &L){
int e;
int pos;
if(L.length==0) return 0;
if(L.length==1) return L.data[0];
e=L.data[0];
for(int i = 1;i<L.length-1;i++)
if(L.data[i]<L.data[i-1]) {
e=L.data[i];
pos=i;}
L.data[pos]=L.data[L.length-1];
return e;
}
int main(){
int a[MaxSize];
SeqList L = {
a,
0
};
ListInsert(L,1,6);
ListInsert(L,1,5);
ListInsert(L,1,1);
ListInsert(L,1,3);
ListInsert(L,1,2);
ListInsert(L,1,7);
cout<<L.data[0]<<L.data[1]<<L.data[2]<<L.data[3]<<L.data[4]<<L.data[5]<<endl;
deletemin(L);
cout<<L.data[0]<<L.data[1]<<L.data[2]<<L.data[3]<<L.data[4]<<L.data[5]<<endl;
return 0;
}