#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;
}
分享到:
相关推荐
在计算机科学中,线性数据结构是一类组织和存储数据的方式,它们的元素按照特定的顺序排列。在这个压缩包中,包含的是三种基本线性数据结构的实现:线性表、栈和队列,每种都有数组和链式两种常见方式的实现。接下来...
在这份文件中,主要介绍了基于双链表的线性数据结构在银行储蓄系统中的实现与应用,同时提供了C++语言的具体实现方法。以下详细阐述了文件中所涉及的关键知识点: 1. 线性数据结构与双链表 线性数据结构是计算机...
标题中所提及的“贪吃蛇游戏在线性数据结构中的案例教学”指出了一个将贪吃蛇游戏作为一个案例,应用于数据结构教学中的方法。这个方法通过游戏设计,对数据结构中的几种线性数据结构进行教学,包括顺序表、单链表、...
利用python实现了堆栈、队列、双端队列和链表等线性数据结构,可以直接使用也可以用作学习。注释较全。
在Java编程语言中,数据结构可以根据其组织方式分为线性数据结构和非线性数据结构两大类。 ### 线性数据结构详解 #### 1. 数组(Array) - **定义**:数组是一种基本的线性数据结构,用于存储同类型的元素。数组...
线性数据结构是计算机科学中基础且重要的概念,它们用于组织和管理数据,便于高效地进行各种操作。在这个“线性数据结构动态演示”中,我们主要关注的是链表和顺序表这两种常见的线性结构,它们在Java编程语言中得到...
线性数据结构是数据结构与算法课程中的基础概念,它是指包含n个相同性质数据元素的有限序列。这种结构的特点是具有唯一的第一元素和最后一个元素,除最后一个元素外,其他元素都有唯一的直接后继,除第一个元素外,...
本资料包提供了一个全面的数据结构学习资源,涵盖了从基础的线性数据结构到复杂的树形结构,再到图论和排序算法的深度探讨。以下是关于这些主题的详细解释: 1. **线性数据结构**:线性数据结构是一类元素间存在一...
文件中指出,线性数据结构可以通过特定的顺序和限制转化为层次数据结构,具体表现在可以将线性数据结构通过遍历的方式转换为树型数据结构。比如,通过前序遍历序列和中序遍历序列可以构造出二叉树。 2. 二叉树的...
这份“数据结构大全”涵盖了从基本的线性数据结构到复杂的数据结构,再到图论和排序算法,是大学生深入学习数据结构的理想资源。 1. **线性数据结构**:线性数据结构包括数组、链表、栈和队列等。数组是最基础的...
线性数据结构通常指的是数组、链表、栈和队列等,它们的特点是每个元素都有唯一的前驱和后继,除了首尾元素。然而,在处理更复杂的数据时,这种简单的前后关系并不适用。这就引出了非线性数据结构,特别是树的概念。...
本资源包"ljg_resource1"提供了全面的数据结构知识,从基础的线性数据结构到复杂的树形结构,再到图论以及排序算法的实现。 1. **线性数据结构**:线性结构是最基本的数据结构,包括数组、链表、栈和队列。数组是一...
在信息技术领域中,线性数据结构是数据结构课程的基础组成部分,涵盖了数据逻辑结构到物理结构的实现。研究线性数据结构,特别是线性表的顺序实现和链式实现,对于程序设计的理论支撑和实践基础至关重要。 线性数据...
【线性数据结构】是计算机科学中数据组织的基础概念,主要研究数据元素间存在的一对一关系。在这一章中,我们首先理解了【数据】和【数据结构】的定义。数据是信息的载体,随着计算机技术的发展,数据类型从最初的...
"线性数据结构" 线性数据结构是计算机科学中一种基本的数据结构,它的特点是所有元素排成一排在数据元素的非空有限集合中。线性数据结构的特点是: 1. 存在唯一的一个被称作“第一个”的元素; 2. 存在唯一的一个...
1. 线性数据结构的基本概念:线性数据结构是数据结构中的一种,它的数据元素之间存在一对一的逻辑关系。线性结构包括数组、链表、栈、队列等,它们的共同特点是数据元素之间的关系可以用一条线性表示,每个数据元素...
首先,线性数据结构主要包括数组、链表、栈和队列。数组是最基础的数据结构,它提供了固定大小的存储空间,元素可以通过索引访问。链表则通过节点间的指针链接元素,支持动态增长。栈是一种后进先出(LIFO)的数据...
线性与非线性数据结构是计算机科学中的两种基本组织方式。它们各有优缺点,适用于不同的场景。选择合适的数据结构对于提高程序性能和效率至关重要。通过理解线性与非线性数据结构的区别和代码实现,我们可以更好地...
1. 线性数据结构:线性数据结构是最基础的数据结构类型,它们按照线性的顺序存储元素。常见的线性数据结构包括数组、链表、栈和队列。 - **数组**:数组是最简单也最基本的数据结构,它是一个固定大小的元素集合,...