数据结构动态顺序表

#include <stdio.h>
#include <stdlib.h>
#define MaxSize 5
typedef struct 
{
  int *data;
  int length;
}SqList;

//初始化
int InitList(SqList *L){
  L->data=(int *)malloc(MaxSize * sizeof(int));
  L->length=0;
  printf("初始化成功\n");
  return 0;
}
//建表,并且输入表内的值
SqList Creat(){
    printf("请输入表内元素(每个数字按空格相隔,以输入-1为终止条件):");
    SqList  L;
    InitList(&L);
    int e;
    int i=0;
    scanf("%d",&e);
        while(e!=-1){
        L.data[i]=e;
        scanf("%d",&e);

        i++;
        if(i>=MaxSize){
            printf("超出数组容量");
            break;
        }
        L.length=i;
        }
     printf("表已经输好了\n");
     return L;
}
//在L中第i个位置之前查人新的数据元素e,L的长度加1                                
int ListInsert_Sq(SqList *L,int i,int e){
    if(i<0||i>L->length){
        printf("超出容量");
       return 0;
    }else{
        for(int j=L->length;j>=i;j--){
           L->data[j]=L->data[j-1];
        }
           L->data[i-1]=e;
           L->length++;
    }
    return 0;
}   
 //打印表
void show(SqList L){
    for(int i=0;i<L.length;i++){
       printf("%d ",L.data[i]);    
    }
     printf("\n ");
}       
//删除L的第i个数据元素,并用e返回其值,L的长度减一                   
int ListDelete_Sq(SqList *L,int i,int &e){
    if(i<0||i>L->length-1){
        printf("超出数组容量");
        }else{
        e=L->data[i-1];
        for(int j=i;j<L->length;j++){
            L->data[j-1]=L->data[j];
        } 
         
          L->length--;
        }
        return 0;
}
 //查看表是否为空函数
int ListEmpty(SqList L){
    if(L.length==0){
    
    printf("为空");
    return 1;
    }else{
     
      printf("不为空");
       return 2;
    }
}                    
//用e返回第i个元素的值
int GetElem_Sq(SqList L,int i,int &a){
    if(i<0||i>L.length){
      return 0;
    }else{
     a=L.data[i-1];
     return 0;
    }
   
}       

//按值查找函数
void LocateElem(SqList L,int &i,int e){
    while(L.data[i-1]!=e&&L.length>0){
      i++;
    }
}                   


int main(){
     SqList  L=Creat();
     ListInsert_Sq(&L,1,9);
     show(L);
      int a=-1;
     GetElem_Sq(L,1,a);
     printf("%d\n",a);
     int e=-1;
     ListDelete_Sq(&L,1,e);
     printf("%d\n",e);
     show(L);
     ListEmpty(L);
     int i=1;
    LocateElem(L,i,3);
    printf("%d\n",i);
   return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值