顺序表---静态数组实现

1.效果

2.代码 

#include <stdio.h>
//数据结构顺序表定义,静态数组实现
#define MaxSize 20
struct SeqList
{
    int data[MaxSize];
    int length;
};
//---------------基本算法声明----------------//
//1.创建空顺序表
void CreatEmptyList(SeqList &L);
//2.初始化顺序表
void InitList(SeqList &L);
//3.打印所有元素
void PrintList(SeqList L);
//4.插入元素
bool InsertList(SeqList &L,int i,int e);
//5.删除元素
bool DeleteList(SeqList &L,int i,int &e);
//6.查询元素
int GetElem(SeqList &L,int i);
//7.修改元素
bool ModifyElem(SeqList &L,int i,int m);

//---------------基本算法实现----------------//
void CreatEmptyList(SeqList &L)
{
    L.length=0;
}

void InitList(SeqList &L)
{
    for(int i=0;i<MaxSize/2;i++)
    {
        L.data[i]=i*i;
        L.length++;
    }
}

void PrintList(SeqList L)
{
    if(L.length==0)
        printf("无元素,为空表\n");
    for(int i=0;i<L.length;i++)
    {
        printf("%5d",L.data[i]);
    }
    printf("\n");
}

bool InsertList(SeqList &L,int i,int e)
{
    if(L.length==MaxSize)
        return false;
    if(i<1||i>L.length+1)
        return false;
    for(int j=L.length;j>=i-1;j--)
    {
        L.data[j+1]=L.data[j];
    }
    L.data[i-1]=e;
    L.length++;
    return true;
}

bool DeleteList(SeqList &L,int i,int &e)
{
    if(L.length==0)
        return false;
    if(i<1||i>L.length)
        return false;
    e=L.data[i-1];
    //删除第i个位置元素
    for(int j=i;j<=L.length;j++)
    {
        L.data[j-1]=L.data[j];
    }
    L.length--;
    return true;
}

int GetElem(SeqList &L,int i)
{
    if(L.length==0)
        return -1;
    if(i<1||i>L.length)
        return -1;
    return L.data[i-1];
}
bool ModifyElem(SeqList &L,int i,int m)
{
    if(L.length==0) return false;
    if(i<1||i>L.length) return false;
    L.data[i-1]=m;return true;
}

int main()
{
    SeqList L;
    printf("1.创建空顺序表\n");
    CreatEmptyList(L);PrintList(L);
    printf("2.初始化顺序表\n");
    InitList(L);PrintList(L);
    printf("3.删除第2个元素\n");
    int e=0;//保存被删元素的值
    DeleteList(L,2,e);
    printf("删除的元素是:%-5d\n",e);
    PrintList(L);
    printf("4.第5个位置插入64\n");
    InsertList(L,5,64);
    PrintList(L);
    printf("5.查询第3个位置元素为:%d\n",GetElem(L,3));
    printf("6.修改第5个位置元素,改为100\n");
    ModifyElem(L,5,100);
    PrintList(L);
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值