线性表的顺序存储结构及简单操作

#include<cstdio>
#include<cstring>
#include<cstdlib>
#define MAXSIZE 14
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int Status;
typedef int ElemType;
typedef struct{		//线性表的顺序存储结构
	ElemType data[MAXSIZE];
	int length;
}SqList;
void Creat(SqList *L){
	int k;
	L->length = 0;
	for(k =1;k<=5;k++){
		L->data[k-1] = k;
		L->length++;
	}
}
Status GetElem(SqList L, int i, ElemType *e){	//获得元素操作
	if (L.length == 0 || i<1||i>L.length){
		return ERROR;
	}else{
		*e = L.data[i-1];
		return OK;
	}
}
Status ListInsert(SqList *L,int i,ElemType e){	//插入操作
	int k;
	if(L->length == MAXSIZE) return ERROR;
	if(i<1 || i>L->length) return ERROR;
	if(i<=L->length){
		for(k = L->length-1;k>=i-1;k--)
			L->data[k+1] = L->data[k];
	}
	L->data[i-1] = e;
	L->length++;
	return OK;
}
Status ListDelete(SqList *L,int i,ElemType *e){	//删除操作
	int k;
	if(L->length == 0) return ERROR;
	*e = L->data[i-1];
	if(i<L->length){
		for(k = i;k<L->length;k++)
			L->data[k-1] = L->data[k];
	}
	L->length--;
	return OK;
}
void OutPut(SqList L){
	int i;
	for(i=1;i<=L.length;i++){
		printf("    %d\n",L.data[i-1]);
	}
}
int main(){
	int i,w;
	SqList L;
	ElemType *e;
	Creat(&L);

	OutPut(L);
	while(~scanf("%d",&w)){
		ListInsert(&L,w,33);
		OutPut(L);
	}
	//printf("ssssssssssssssssssssss  %d\n",L.length);
	return 0;
}

  

时间: 2024-10-05 15:21:26

线性表的顺序存储结构及简单操作的相关文章

数据结构之线性表之顺序存储结构(3)

1 前言 经过前两张的理论基础,我相信大家都能简单的明白了数据结构和算法一些常用的概念了,从今天开始我们开始学习数据结构中线性表,一起叩响数据结构的大门. 2 详述 线性表(List):零个或者多个数据元素的有限序列. 如果用数学语言来进行定义: (声明:由于下标不是很好弄出来,所以只能表示下面这种方式了,请见谅!) 若线性表记作(a1,...ai-1,ai,ai+1,...,an),则表中ai-1领先于ai,ai领先于ai+1,称ai-1是ai的直接前驱元素,ai+1是ai的直接后继元素.当i

线性表的顺序存储结构和链式存储结构

前言 上一篇<栈>中提到了栈的顺序存储结构和链式存储结构,现在就对此做个简单的比较.因为栈是线性表的一种,顺序存储结构和链式存储结构实际是线性表的两种存储方式.而栈和队列都是两种重要的线性表结构.所以本文标题直接为线性表的顺序存储结构和链式存储结构. 开始比较两种不同的存储方式 一.顺序存储结构(也可称为顺序表) 顺序表的特点是逻辑上相邻的数据元素,物理存储位置也相邻,并且,顺序表的存储空间需要预先分配. 优点: (1)方法简单,各种高级语言中都有数组,容易实现. (2)不用为表示节点间的逻辑

数据结构之线性表(顺序存储结构)

小学生放学都是要按顺序排队的,一个接一个,每个小学生的前后位置是固定的,这样便于迅速清点. 其实这就是一个线性表,从这件事里我们就可以找到很多关于线性表的特性,如 1.线性表是一个序列,它是有顺序的(排队) 2.第一个元素无前驱,最后一个无后继,其他每个元素都有一个前驱和后继(一个接一个) 3.元素是有限的(小学生的个数是有限的) 4.数据类型都相同(都是小学生在排队) 说明白线性表示什么,下面我们直接看线性表的实现 线性表的实现分顺序存储结构和链式存储结构 顺序存储结构: #define LI

第6课 - 线性表的顺序存储结构及实现

1. 线性表的顺序存储结构 [顺序存储结构定义] 线性表的顺序存储结构,指的是用一段地址连续的存储单元依此存储线性表中的数据元素. [设计思路] 可以用一维数组来实现顺序存储结构的线性表. 1 template <typename T> 2 class SeqList : public List<T> 3 { 4 protected: 5 T *m_array; //顺序存储空间 6 int m_length; //当前线性表长度 7 }; [顺序存储线性表类的组成] DTLib顺

线性表之顺序存储结构(C语言动态数组实现)

线性表的定义:N个数据元素的有限序列 线性表从存储结构上分为:顺序存储结构(数组)和 链式存储结构(链表) 顺序存储结构:是用一段连续的内存空间存储表中的数据 L=(a1,a2,a3....an) 链式存储结构:是用一段一段连续的内存空间存储表中每一行的数据,段与段之间通过一个引用(指针)相互连接来,形成一个链式的存储结构 看到顺序存储结构的图示,我们可能会马上联想到C语言的数组.是的,数组就是一种典型的顺序存储数据结构.下面我通过一个实例,来实现对顺序存储结构中的数据增.删.改.查的操作. 首

线性表的顺序存储结构之顺序表类的实现_Java

在上一篇博文--线性表接口的实现_Java中,我们实现了线性表的接口,今天让我们来实现线性表的顺序存储结构--顺序表类. 首先让我们来看下顺序表的定义: 线性表的顺序存储是用一组连续的内存单元依次存放线性表的数据元素,元素在内存的物理存储次序与它们在线性表中的逻辑次序相同,即元素ai与其直接前驱ai-1及直接后继ai+1的存储位置相邻.顺序存储的线性表也成为顺序表(sequential list). 顺序表类SeqList提供线性表基于顺序存储结构的一种实现,它有两个私有成员变量table和n,

02.线性表(一)顺序存储结构

顺序存储结构 一.线性表基本概念 1.线性表定义 线性表(list)是指零个或多个数据元素的有限序列,所有数据元素为相同数据类型且一个数据元素可以由多个数据项组成.若将线性表记为(a1,..ai-1,ai,ai+1...,an),线性表元素的个数n(n>0,n=0时为空表)定义为线性表的长度,其中ai-1是ai 的直接前驱元素,ai+1是ai的直接后继元素. 2.线性表的抽象数据类型 ADT 线性表(List) Data 线性表的数据对象集合为{a1,a2,....an},每个元素的类型均匀Da

简要比较线性表的顺序存储结构和链式存储结构

我们分别从存储分配方式.时间性能.空间性能三方面来做对比. 存储分配方式 顺序存储结构用一段连续的存储单元依次存储线性表的数据元素. 单链表采用链式存储结构,用一组任意的存储单元存放线性表的元素. 时间性能 <1>查找 顺序存储结构O(1) 单链表O(n) <2>插入和删除 顺序存储结构需要平均移动表长一半的元素,时间为O(n) 单链表在计算出某位置的指针后,插入和删除时间仅为O(1) 空间性能 顺序存储结构需要预分配存储空间,分大了,容易造成空间浪费,分小了,容易发生溢出. 单链

线性表的顺序存储结构及该结构的插入与删除

顺序存储定义 线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素. 顺序存储方式 线性表的顺序存储结构,就是在内存中找了块地儿,通过站位的形式,把一定内存空间给占了,然后把相同数据类型的数据元素依次存放到这块空地中[可通过C中的一维数组来实现顺序存储结构]. 描述顺序存储结构需要三个属性: 1. 存储空间的起始位置:数组 data , 它的存储位置就是存储空间的存储位置 2. 线性表的最大存储容量 3. 线性表的当前长度 数组长度 与 线性表长度区别 - 数组长度: 即