顺序线性表的有关操作(创建,销毁,插入,查找,删除等)

#include<stdio.h>
#include <cstdlib>//支持库函数 
#include<conio.h>
#define MAXSIZE 100
typedef struct{
int *elem;
int length;
}SqList;
//创建空表 
int InitList(SqList &L){
L.elem=new int[MAXSIZE];
if(!L.elem) {
printf("分配空间失败!\n"); 
exit(1);
}
L.length=0;
printf("创建成功!\n"); 
return 0;
}


//遍历(输出数据)
void TraverseList(SqList L){
int i;
for(i=1;i<=L.length;i++){
printf("%d ",L.elem[i-1]);
}
printf("\n");

//插入元素 
int ListInsert(SqList &L,int i,int e){
if(i<1||i>(L.length+1)){
printf("插入失败!");
return -1;
}else if(L.length==MAXSIZE){
printf("插入失败!");
return -1;
}
int j=0;
for(j=L.length-1;j>=i-1;j--){
L.elem[j+1]=L.elem[j];
}
++L.length;
L.elem[i-1]=e;
printf("插入成功!");
printf("\n"); 
return 0;
}
//判断线性表是否为空
bool ListEmpty(SqList L){
if(L.length==0){
printf("是空表!");
return true;
}
else{
printf("不是空表!");
return false;
}
}
//返回线性表的数据个数
int ListLength(SqList L){
return L.length;

 


//取值 
int GetElem(SqList L,int i,int &e){
if(i<1||i>L.length){
printf("取值失败!");
printf("\n"); 
}
e=L.elem[i-1];//数组 
printf("第%d个元素为:%d",i,e);
printf("\n"); 
return 0;



//查找
void LocateElem(SqList L,int e){
int i,note1=0,note2=0;
for(i=1;i<=L.length;i++){
if(e==L.elem[i-1]){
printf("查找成功!为线性表中的第%d个元素\n",i);
note1=1;
}
else
  note2=1;
}
if(note1==0&&note2==1){
printf("查找失败!\n");
}






// 删除
void ListDelete(SqList &L,int i){
if(i<1||i>L.length){
printf("不在删除范围之内"); 
printf("\n");
}
int j;
for(j=i;j<L.length;j++){
L.elem[j-1]=L.elem[j];
}
--L.length;
printf("删除成功!\n");
TraverseList(L);



//清空(使L.length=0)
ClearList(SqList &L){
if(L.length){
L.length=0;
printf("清空成功!%d",L.length); 
}
}
 
//销毁
void DestroyList(SqList &L){

    if(L.elem){
    delete L.elem;
    printf("销毁成功!"); 
}
}
//退出
void Quit(int &flag){
flag=0;
printf("按任意键退出!\n");











int main(){
int flag=1,choice,number,e,i;
SqList sq;
//
while(flag){
printf("对线性顺序表有以下操作:\n");
printf("1.创建顺序表\n");
printf("2.插入元素\n");
   printf("3.查找某个元素\n");
printf("4.删除元素\n");
   printf("5.退出顺序表\n");
   printf("请输入选择1-5:");
scanf("%d",&choice); 
   switch(choice){
    case 1:InitList(sq);
          break;
    case 2:printf("请输入插入元素的位置以及元素:");
          scanf("%d,%d",&i,&e);
      ListInsert(sq,i,e);
   
      break;
case 3:printf("请输入查找的元素:\n");
      scanf("%d",&e);
  LocateElem(sq,e);
  break;
case 4:printf("请输入要删除第几个元素:");
      scanf("%d",&e);
      ListDelete(sq,e);
      break;
case 5:Quit(flag);
      getch();
      break;
default:break;
   
}
   

DestroyList(sq);
return 0;
  • 9
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值