顺序表-静态分配

#include<iostream>
#include<stdio.h>
#define MaxSize 10
using namespace std;
typedef struct{
    int data[MaxSize];
    int length;
}Sqlist;


void initlist(Sqlist &l)
{   
    for(int i = 0;i<MaxSize;i++)
        l.data[i]=0;
    l.length=0;

}





bool insertlist(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;j>=i;j--)
        {
          l.data[j]=l.data[j-1];
        }
    l.data[i-1]=e;
    l.length++;
    return true;
}





bool deletelist(Sqlist &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;
}




bool selectbylocation(Sqlist l,int location)
{
    if (location<1||location>l.length)
        {
            printf("位序不合法,请重新查找\n");
            return false;
        }
    

    else    
        {
            printf("查找成功\n");
            printf("位序为%d的值为%d\n\n",location,l.data[location-1]);
        }
            
}






int selectbyvalue(Sqlist l,int e)
{
    for(int i=0;i<l.length;i++)
        if(l.data[i]==e)
        {
            printf("查找成功\n");
            return i+1;
        }
}






void updatevalue(Sqlist &l,int location,int e){
        if(location<1||location>l.length)
            printf("位序不合法\n");
        else
           {    
            l.data[location-1]=e;
            printf("修改成功\n\n");
            
           }
}

void menu()
{
    printf("选择功能\n");
    printf("0:退出\n");
    printf("1:插入功能\n");
    printf("2:删除功能\n");
    printf("3:按位查找\n");
    printf("4:按值查找\n");
    printf("5:修改指定位序处的值\n");
}

int main()
{
    int location,value=0; 
    int e=0;
    int option=0;
    Sqlist l;

    initlist(l);
     
while(1)
{ 

        menu();
        scanf("%d",&option);
        if (option == 0)
            {   printf("退出成功\n\n");
                break;
            }
        switch(option){


    
            case 1:
                printf("请输入要插入的位置以及数据\n");
                scanf("%d %d",&location,&value);   
                if(insertlist(l,location,value))
                        printf("插入成功\n\n");
                else
                        printf("位序i不合法,插入失败。\n\n");
    
            break;



            case 2:
                printf("请输入要删除的元素的位序\n");
                scanf("%d",&location);
                if (deletelist(l,location,e))
                        {
                    printf("成功删除第%d个元素,值为%d\n\n",location,e);
                        }
                else
                    printf("位序i=%d不合法,删除失败\n\n",location);

            break;



 
            case 3:
                printf("请输入位序\n");
                scanf("%d",&location);
                selectbylocation(l,location);
                
            break;


 //按值查找(该值在顺序表中第一次出现的位置)
            case 4:
              
                
                printf("请输入元素的值\n");
                scanf("%d",&e);
                location=selectbyvalue(l,e);
                printf("值为%d对应的位序为%d\n\n",e,location);
            break;



            case 5:
                
                printf("输入要修改的位序以及预期的值\n");
                scanf("%d %d",&location,&e);
                updatevalue(l,location,e);
            break;            }
}
    system("pause");
    return 0;
}