用c++实现顺序表的各种基本运算的算法

//代码部分

#include <stdio.h>

#include <stdlib.h>

#include <malloc.h>

#define MaxSize 50

typedef char ElemType;

typedef struct{

    ElemType data[MaxSize];

    int length;

}SqList;

void CreateList(SqList *&L,ElemType a[],int n){

    L =(SqList *)malloc(sizeof(SqList));

    for(int i=0;i<n;i++)

    L->data[i]=a[i];

     L->length=n;

}

void InitList(SqList *&L){

    L=(SqList *)malloc(sizeof(SqList));

    L->length=0;

}

void DestroyList(SqList *&L){

free(L);

}

bool ListEmpty(SqList *L){

return(L->length==0);

}

int ListLength(SqList *L){

return(L->length);

}

void DispList(SqList *L){

for(int i=0;i<L->length;i++)

printf("%c",L->data[i]);

printf("\n");

}

bool GetElem(SqList *L,int i,ElemType &e){

if(i<1||i>L->length)

return false;

e=L->data[i-1];

return true;

}

int LocateElem(SqList *L,ElemType e){

int i=0;

while(i<L->length&&L->data[i]!=e)

i++;

if(i>=L->length)

return 0;

else

return i+1;

}

bool ListInsert(SqList *&L,int i,ElemType e){

int j;

if(i<1||i>L->length+1||L->length==MaxSize)

return false;

i--;

for(j=L->length;j>i;j--)

L->data[j]=L->data[j-1];

L->data[i]=e;

L->length++;

return true;

}

bool ListDelete(SqList *&L,int i,ElemType &e){

int j;

if(i<1||i>L->length)

return false;

i--;

e=L->data[i];

for(j=i;j<L->length-1;j++)

L->data[j]=L->data[j+1];

L->length--;

return true;

}

//验证部分

int main(){

SqList *L;

ElemType e;

printf("顺序表的基本运算如下:\n");

printf("  (1)初始化顺序表L\n");

InitList(L);

printf("  (2)依次插入元素a,b,c,d,e\n");

ListInsert(L,1,'a');

ListInsert(L,2,'b');

ListInsert(L,3,'c');

ListInsert(L,4,'d');

ListInsert(L,5,'e');

printf("  (3)输出顺序表L:");DispList(L);

printf("  (4)顺序表L的长度:%d\n",ListLength(L));

printf("  (5)顺序表L为%s\n",(ListEmpty(L)?"空":"非空"));

GetElem(L,3,e);

printf("  (6)顺序表L的第三个元素:%c\n",e) ;

printf("  (7)元素a的位置:%d\n",LocateElem(L,'a')) ;

printf("  (8)在第四个元素位置上插入元素f\n") ;

ListInsert(L,4,'f');

printf("  (9)输出顺序表L:") ;DispList(L);

printf("  (10)删除L的第三个元素\n") ;

ListDelete(L,3,e);

printf("  (11)输出顺序表L:") ;DispList(L);

printf("  (12)释放顺序表L\n") ;

DestroyList(L);

return 1;

}

//运行截图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值