#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 getListNum(PSqList L);//返回当前数组的个数
int getAllListNum(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");
insertValue(initialSqList,3,999);
showXianXing(initialSqList);
printf("\n");
insertValue(initialSqList,3,9991);
showXianXing(initialSqList);
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){
if(L->length == 0){
return false;
}
L->elem[L->length-1] = NULL;
L->length = L->length -1;
return true;
}
//返回当前数组的个数
int getListNum(PSqList L){
return L->length;
}
//返回最大的容纳的数据
int getAllListNum(PSqList L){
return L->listsize;
}
bool insertValue(PSqList L,int posti,int value){
if(posti<0||posti>L->length||L->length==L->listsize){
return false;
}
int a = 0;
int b = posti;
L->length = L->length +1;
for(posti;posti<L->length+1;posti++){
a = L->elem[posti];
L->elem[posti] = value;
value = a;
}
// L->elem[posti] = value;
return true;
}
分享到:
相关推荐
我自己写的三种线性数据结构的实现,即线性表\栈\队列的数组及链式实现
利用python实现了堆栈、队列、双端队列和链表等线性数据结构,可以直接使用也可以用作学习。注释较全。
数据结构大实验,适合在校大学生,AVL树的非递归实现,树排序的实现,整套程序运行成功,欢迎大家下载!!!
C语言版 数据结构与算法课程 第2章 线性表 线性数据结构(共122页).ppt C语言版 数据结构与算法课程 第3章 排序算法基础(共46页).ppt C语言版 数据结构与算法课程 第4章 哈希表(共49页).ppt C语言版 数据结构与...
数据结构大实验,基于双链表的银行储蓄系统,采用C++实现,适合在校大学生,欢迎大家下载哦。
java实现的线性数据结构动态演示系统,包括链表的插入,删除,合并,顺序表的插入,删除,合并,单线程
整理的数据结构习题,是关于线性数据结构部分的内容
数据结构与算法基础班------线性数据结构,有课件,代码,练习题,测试数据,欢迎下载!
#资源达人分享计划#
数据结构大全,从最基础的线性数据结构到树形数据结构,再到图论,排序算法,都有完整的实现。目前比较完整的是java的代码,后面会陆续完善c++、c、python、golang版本.zip
前面我们学习的线性数据结构完美版资料.ppt
1.线性数据结构.pdf
非线性数据结构PPT学习教案.pptx
数据结构大全,从最基础的线性数据结构到树形数据结构,再到图论,排序算法,都有完整的实现。目前比较完整的是java的代
软件技术基础-线性数据结构(与“线性表”有关文档共28张).pptx
软件技术基础:非线性数据结构.ppt
计算机软件基础:第2章 线性数据结构-1.ppt
计算机软件基础:第2章 线性数据结构 - 2链表.ppt
掌握线性表的单链表实现与静态链表实现。 掌握线性表的应用:运动会信息管理系统。 基于单链表实现线性表 List1 的典型操作(判空、判满、求表长、插入、删除、查找、修改、遍历、置空、普 通构造、拷贝构造、赋值...