ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

数据结构顺序表基本操作 C++

2022-04-17 19:04:50  阅读:150  来源: 互联网

标签:顺序 return int elem C++ length SqList 基本操作 数据结构


#include<stdio.h>
#define MAXSIZE 10 //默认的最大长度

//顺序表类型定义
typedef struct 
{
    int *elem;  //指示动态分配数组的指针
    int length; //顺序表的当前长度
}SqList;

//初始化顺序表
bool InitList(SqList &L){
    L.elem=new int[MAXSIZE]; //为顺序表分配空间
    if(!L.elem) //存储分配失败
        return false;
    L.length=0;
    return true;
}

//销毁顺序表
void DestroyList(SqList &L){
    if(L.elem) delete L.elem; //释放存储空间
}

//清空顺序表
void ClearList(SqList &L){
    L.length=0;
}

//求顺序表的长度
int GetLength(SqList L){
    return L.length;
}

//判断顺序表是否为空
bool IsEmpty(SqList L){
    if(L.length==0) return true;
    else return false;
}

//顺序表的取值(取第i个元素)
bool GetElem(SqList L,int i,int &e){
    if(i<1 || i>L.length) //判断i值是否合理
        return false;
    e=L.elem[i-1];
    return true;
}

//插入
bool ListInsert(SqList &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-1;j>=i-1;j--)
        L.elem[j+1]=L.elem[j]; //插入位置及之后的元素后移
    L.elem[i-1]=e;
    L.length++;
    return true;     
}

//顺序表的查找
int LocateElem(SqList L,int e){
    for(int i=0;i<L.length;i++)
        if(L.elem[i]==e) return i+1;
    return -1; //查找失败 
}

//删除
bool ListDelete(SqList &L,int i){
    if(i<1 ||i>L.length) return false; //删除位置不合法
    for(int j=i;j<=L.length-1;j++)
        L.elem[j-1]=L.elem[j]; //被删除元素之后的元素前移
    L.length--;
    return true; 
         
}

//遍历
void PrintList(SqList L){
    for(int i=0;i<L.length;i++)
        printf("L.elem[%d]=%d\n",i,L.elem[i]);
}

int main(){
    //定义和初始化
    SqList L; 
    InitList(L);
    //插入元素
    for(int i=1;i<7;i++)
        ListInsert(L,i,i);
    //遍历
    PrintList(L);
    //取值
    int e;
    GetElem(L,3,e);
    printf("第三个元素=%d\n",3,e);
    //查找
    printf("元素3的位置:%d\n", LocateElem(L,3));
    //删除元素3
    ListDelete(L,3);
    //遍历
    PrintList(L);
    return 0;
}

 

标签:顺序,return,int,elem,C++,length,SqList,基本操作,数据结构
来源: https://www.cnblogs.com/nanamiyi/p/16156756.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有