ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

顺序表的各项操作

2021-04-13 18:32:18  阅读:155  来源: 互联网

标签:顺序 int 各项 length SqList printf 操作 data


数据结构顺序表的各项操作

#include <stdio.h>
#include <stdlib.h>
#define MaxSize 20
typedef int ElemType;
typedef struct{
        ElemType  data[MaxSize];
        ElemType length;
    }SqList;
void CreateList(SqList *&L,ElemType a[],ElemType n){
    int i=0,k=0;
    L=(SqList *)malloc(sizeof(SqList));
    while(i<n){
        L->data[k]=a[i];
        k++;
        i++;
    }
    L->length=k;
    printf("创建顺序表成功\n");
}
void DisplayList(SqList *&L){
    for(int i=0;i<L->length;i++){
        printf("%d\n",L->data[i]);
    }
}
void ListEmpty(SqList *&L){
    if(L->length==0)
        printf("该顺序表为空表\n");
    else
        printf("该顺序表不为空\n");
}
int ListLength(SqList *&L){
    return(L->length);
}
int GetElem(SqList *&L,int i){
    if(i<1||i>L->length){
        printf("error\n");
        return -1;
    }
    else
        return(L->data[i-1]);
}
void  LocateElem(SqList *&L,int e){
    int i=0,t=0;
    while(i<L->length){

        if(L->data[i]==e){
        printf("数字的序号是%d\n",i);
        t=1;

        }
        i++;
    }
    if(i>=L->length&&t==0)
        printf("顺序表中不存在该数\n");
}
bool ListInsert(SqList *&L,int i,int e){
    if(i<1&&i>L->length+1)//大于length+1是为了多一个位置插入元素
        return false;
    i--;
    for(int j=L->length;j>i;j--){//j>i是为了在这后面插入一个数
        L->data[j]=L->data[j-1];
    }
    L->data[i]=e;
    L->length++;
    return true;
}
bool ListDelete(SqList *&L,int i){
    if(i<1||i>L->length)
        return false;
    i--;
    for(int j=i;j<L->length;j++)
        L->data[j]=L->data[j+1];
    L->length--;
    return true;
}
void DestroyList(SqList *&L){
    free(L);
    printf("销毁顺序表成功\n");
}
void AlterList(SqList *&L,int i,int e){
    if(i<1||i>L->length){
        printf("输入的顺序号有误\n");
       return;
    }
    i--;
    L->data[i]=e;
}
int main()
{
    int length;
    int List_length,order,number,elem,i,e,number2,n;
    SqList *L;
    ElemType data[MaxSize];
    printf("请输入顺序表的长度和数据:");
    scanf("%d",&length);
    for(int i=0;i<length;i++){
        scanf("%d",&data[i]);
    }
    printf("<-顺序表的操作->\n");
    printf("1:创建顺序表\n");
    printf("2:销毁顺序表\n");
    printf("3:输出顺序表\n");
    printf("4:输出顺序表的长度\n");
    printf("5:判断顺序表是否为空\n");
    printf("6:顺序表插入数据\n");
    printf("7:删除顺序表的数据\n");
    printf("8:修改顺序表的值\n");
    printf("9:按照序号查询顺序表的值\n");
    printf("10:按照值查询顺序表的值\n");

    while(1){
        printf("请输入你要执行的操作序号:");
        scanf("%d",&n);
        switch(n){
            case 1:CreateList(L,data,length);
            break;
            case 2:DestroyList(L);
            break;
            case 3:DisplayList(L);
            break;
            case 4:List_length=ListLength(L);
                    printf("该顺序表的长度是:%d\n",List_length);
            break;
            case 5:ListEmpty(L);
            break;
            case 6:printf("请输入插入序号和插入数字:");
                   scanf("%d %d",&i,&e);
                   ListInsert(L,i,e);
            break;
            case 7:printf("请输入删除数据的序号:");
                    scanf("%d",&number2);
                    ListDelete(L,number2);
            break;
            case 8:printf("请输入要修改的序号和插入数字:");
                   scanf("%d %d",&i,&e);
                   AlterList(L,i,e);
            break;
            case 9:printf("请输入查找数的序号:");
                    scanf("%d",&order);
                    elem=GetElem(L,order);
                    printf("第%d个数是:%d\n",order,elem);
            break;
            case 10: printf("请输入查找数是:");
                    scanf("%d",&number);
                    LocateElem(L,number);
            break;
            default:
                printf("请输入正确的操作序号\n");
        }
    }
    return 0;
}

标签:顺序,int,各项,length,SqList,printf,操作,data
来源: https://blog.csdn.net/weixin_43732607/article/details/115674876

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

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

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

ICode9版权所有