数据结构--线性表

在正常的输入和删除的情况下,不考虑特殊情况的。

这毕竟是自己第一次实现啊。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

 

 

#include<stdio.h>
#include<malloc.h>
//#define LIST_INIT_SIZE 100;//线性表存储空间的初始分配量
//#define LISTINCREMENT 10;//线性表存储空间的增量

typedef struct xianxing {

    int* elem;//空间存储地址
    int length;//当前长度
    int listsize;//当前分配的存储容量

} SqList,*PSqList;

PSqList InitList(SqList* L);//返回指针地址

bool addValue(PSqList L,int a);//增加一个数字到后面去
void showXianXing(PSqList L);//显示线性表的全部元素
bool deleteLastValue(PSqList L);//删除最后一个元素
bool alertValue(PSqList L,int value);//更改最后一个值
bool insertValue(PSqList L,int posti,int value);//指定一个位子插入
bool deletePosValue(PSqList L,int posti);//指定一个位子的删除
bool CheckIsEmpty(PSqList L);//检查是不是为空
bool clearList(PSqList L);//清空表



int main(void){

  //  SqList* pSqList = (SqList*)malloc(sizeof(SqList));
     SqList* pSqList = NULL;

    PSqList initialSqList = InitList(pSqList);

    if(initialSqList->listsize>0){
        printf("%d\n",initialSqList->listsize);
        printf("initial is successful!!!\n");
    }

    bool isAddRight = addValue(initialSqList,1);
    bool isAddRightx = addValue(initialSqList,2);
    addValue(initialSqList,3);
    addValue(initialSqList,4);
    addValue(initialSqList,5);
    addValue(initialSqList,6);
    addValue(initialSqList,7);
    addValue(initialSqList,8);
    
      int ax = 0;
      if(isAddRight){
         printf("add is successful!!!\n");
         ax =  initialSqList->elem[1];
         printf("##########%d\n",ax);
         int b=  initialSqList->length;
         printf("%d\n",b);
     }

  showXianXing(initialSqList);
  printf("\n");
  deleteLastValue(initialSqList);
  printf("\n");
  showXianXing(initialSqList);
  printf("\n");
  deleteLastValue(initialSqList);
  printf("\n");
  showXianXing(initialSqList);
  printf("\n");
    return 0;
}

//初始化线性列表
SqList* InitList(SqList* L){

    L = (SqList*)malloc(sizeof(SqList));//初始化指针

    bool isRight = true;

    L->elem = (int *)malloc(sizeof(int)*100);

    if(!L->elem){
   
        isRight = false;
    }
    L->length = 0;
    L->listsize = 100;

    return L;

}

//增加一个值
bool addValue(PSqList L,int a){

    bool isRight = true;
    int nowLenght = L->length;//当前长度,数组的个数a[5] = {3,2,3,4,3}
    int allLenght = L->listsize;//当前可容纳的个数
    if(nowLenght >=allLenght){
   
        return false;
    }

     L->elem[L->length] = a;
     L->length = nowLenght +1;

    return true;
}

//显示所有值
void showXianXing(PSqList L){

    if(L==NULL&&L->length==0){
        printf("线性表没有值或者为被初始化");
        return ;
    }
    for(int i=0;i<L->length;i++){
   
        printf("%d ",L->elem[i]);
    }

    return ;



}

//检查是不是为空
bool CheckIsEmpty(PSqList L){

    int nowLength = L->length;
    if(nowLength == 0){
   
        return true;
    }
    return false;
}

//删掉最后一个值
bool deleteLastValue(PSqList L){
   
    L->elem[L->length-1] = NULL;
    L->length = L->length -1;
   
    return true;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值