顺序表的实现代码(c++)

#define Maxsize 100 // 最大空间
typedef struct {
     int *elem; // 基地址;
     int length; // 顺序表的长度 
} SqList; 

//L加&表示引用类型参数,也叫取地址,使函数内部的改变跳出函数仍然有效
//L不加&内部改变,跳出函数后无效
bool initialize(SqList &L)//构造一个空的顺序表L
{
  L.elem = new int[Maxsize];  //为顺序表分配Maxsize个空间
  if(!L.elem){//存储分配失败     
    return false;
 }
  L.length = 0;
  return true; 
}

bool Createlist (SqList &L,int n/*数据的长度*/)//创建顺序表 
{
      if(n >= Maxsize) {
          cout<<"请输入小于"<<Maxsize<<"的数"<<endl;
        return false; 
      }    
      for(int i = 0; i < n;i++){
          cin>>L.elem[i];
          L.length++;
        }
        return true;
} 
bool GetElem(SqList L,int i,int &e){//查找顺序表里的值 if(i < 1 || i > L.length){ //判断i值是否合理,若不合理,返回false return false; } e = L.elem[i-1];//第i-1的单元存储着第i个数据 return true; }
bool ListInsert(SqList &L,int i,int &e)//插入删除顺序表位置中的值 { if(i < 1 || i > L.length || L.length == Maxsize ){ //判断i值是否合理,若不合理,返回false return false; } for(int j = L.length-1;j >= i - 1;j--){ L.elem[j+1] = L.elem[j]; } L.elem[i-1] = e; L.length ++; return true; }
bool ListDelete_Sq(SqList &L,int i) //删除顺序表位置中的值 { if((i < 1) || (i > L.length)) return false;//i值不合法 for(int j = i;j <= L.length-1;j++){ L.elem[j-1] = L.elem[j];//被删除元素之后的元素后移一位 } L.length--;//表长减少1 return true; }
void print(SqList L)//输出顺序表 { for(int j = 0;j <= L.length - 1;j++) cout<<L.elem[j]<<" "; }
void DestroyList(SqList &L)//释放存储空间 { if (L.elem) delete[]L.elem; }

 

-------------------------------------------

个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!

如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

posted @ 2020-08-12 22:08  比尔的歌  阅读(466)  评论(0)    收藏  举报