/*
* 顺序存储的线性表
*/
#include <stdio.h>
#define OK 1
#define ERR 0
#define LIST_INIT_SIZE 100
#define LIST_INCREMENT 10
#define ElemType char
typedef struct {
ElemType *elem;
int length;//元素个数
int listSize;//总容量
} SqList;
int InitList(SqList *aList)
{
aList->elem = (ElemType *)malloc(sizeof(ElemType)*LIST_INIT_SIZE);
if(NULL == aList->elem)return ERR;
aList->listSize = LIST_INIT_SIZE;
aList->length = 0;
return OK;
}
int ListInsert(SqList *aList,ElemType e,int index)
{
int i;
if( index<0 || index>aList->length ){
printf("Error : Insert %c to wrong position %d\n",e,index);
return ERR;//中间不允许存在空位
}
if( aList->listSize <= aList->length )
{
aList->elem = (ElemType *)realloc(aList->elem,
sizeof(ElemType)*aList->listSize+LIST_INCREMENT);
if(NULL == aList->elem) return ERR;
aList->listSize += LIST_INCREMENT;
}
printf("Insert %c to position %d\n",e,index );
i = aList->length;
while(i>index)
{
aList->elem[i] = aList->elem[i-1];
i--;
}
aList->elem[index] = e;
aList->length++;
return OK;
}
int ListDelete(SqList *aList,ElemType *e,int index)
{
int i = index;
if(i<0 || i>=aList->length)return ERR;
*e = aList->elem[index];
i = index;
while(i<aList->length-1)
{
aList->elem[i] = aList->elem[i+1];
i++;
}
aList->length--;
return OK;
}
int ListTraverse(SqList aList)
{
int i=0;
while(i < aList.length){
printf("%c\t",aList.elem[i]);
i++;
}
printf("\n");
return OK;
}
int main(int argc, char *argv[])
{
SqList aList ;
char element;
int position;
InitList( &aList );
while(1){
printf("Please input element and position to insert in (input ; to quit) :\n");
scanf("%1s,%d",&element,&position);
if(';' == element) break;
ListInsert(&aList,element,position);
}
ListDelete(&aList,&element,0);
ListTraverse(aList);
printf("length :%d . \n",aList.length);
return OK;
}
分享到:
相关推荐
在顺序存储结构中,线性表的元素被存储在一个一维数组中,按照它们在表中的相对位置来表示数据之间的逻辑关系。这种方式简单直观,易于理解和操作。 线性表的顺序存储具有以下特点: 1. **连续存储**:所有元素存储...
1顺序存储线性表及合并两个线性表.cpp
在本实验中,我们将关注线性表的顺序存储方式,即通过数组来存储线性表的数据。 顺序存储线性表是用一维数组来实现的,数组中的每个元素对应线性表中的一个节点。它的优点是存储密度高,便于进行顺序存取,但插入和...
数据结构中的 顺序线性表的基本操作,适合刚学数据结构的同学用
"数据结构实验报告-实验:1线性表的顺序存储和操作实现" 本实验报告的主要目的是为了实现线性表的顺序存储和操作,使用 Java 语言编写程序来实现顺序存储线性表的功能。实验中,我们定义了一个名为 `SequenceList` ...
在本实验“数据结构 实验1 顺序存储的线性表”中,我们将聚焦于一种基础且重要的数据结构——顺序存储的线性表。线性表是一种一维的数据结构,它的元素按照特定的顺序排列,可以是数字、字符、或其他更复杂的数据...
### 顺序存储结构线性表的插入与删除 #### 知识点概述 在计算机科学领域,线性表是数据结构中最基本的数据组织形式之一,它由一系列具有相同特性的数据元素组成,这些元素之间存在着一种一对一的关系。线性表可以...
在实际应用中,线性表的存储方式主要有两种:顺序存储和链式存储。本话题主要关注的是线性表的动态顺序存储,即在内存中按元素的逻辑顺序连续分配存储空间的一种方式。 动态顺序存储的特点在于其灵活性。当线性表中...
初学者线性表顺序存储的创建插入删除查询。C语言课后作业。可供参考。
在顺序存储结构下,线性表的元素被存储在一个连续的内存区域,这样的方式使得访问和操作变得高效。下面将详细讨论线性表的顺序存储及其实现,以及涉及到的基本操作。 顺序存储的线性表通常使用数组来实现。数组是一...
实验一 顺序结构线性表基本操作的实现 线性表基本操作的实现 线性表的顺序存储有何优缺点?
线性表的顺序存储的c语言实现,带有注释,简洁明了,一看即懂
在这个场景中,我们关注的是在C语言中实现基于顺序存储的线性表,即数组形式的线性表。顺序存储意味着所有元素在内存中是连续存放的,这种存储方式便于直接访问和操作。 首先,我们需要了解线性表的基本操作: 1. ...
线性表可以用数组或链表来实现,本文中我们使用顺序存储的方式,即使用数组来存储元素。 线性表的实现需要定义一个类,包括构造函数、析构函数、输入函数、输出函数和归并函数等。构造函数用于分配内存空间,析构...
顺序存储的线性表是一种常见的数据结构,它通过在内存中连续分配空间来存储元素,便于进行各种操作。在这个特定的实现中,线性表的数据类型是字符(char),但其实这种实现方式同样适用于其他基本数据类型。以下是该...
在计算机科学中,线性表的顺序存储是常用的数据组织方式,其特点是元素在内存中按顺序连续存放。本话题将深入探讨线性表的顺序存储结构及其在C语言中的算法实现,包括线性表的输入输出、插入、删除以及长度和置空...
在这个特定的压缩包中,"顺序存储结构线性表c程序源码"提供了C语言实现线性表操作的代码。 线性表的顺序存储是指所有元素在内存中占用连续的存储空间,通过数组来实现。这种方式的优点是访问速度快,因为数组中的...
1. 存储方式:顺序线性表采用顺序存储,即数据元素在内存中是顺序存放的,元素间的逻辑关系通过物理位置来体现。 2. 访问效率:由于元素在内存中是连续的,所以可以通过索引直接访问任意位置的元素,时间复杂度为O(1...
在顺序存储的线性表中,元素按照它们在内存中的位置顺序进行排列,这种存储方式简单直观,易于理解和操作。本文将深入探讨线性表顺序存储的实现,以及与其相关的算法和数据结构知识。 首先,顺序存储结构通常采用...
在这个实验报告中,顺序存储结构通过定义一个结构体来表示线性表,包括三个字段:elem表示线性表首元素的地址,length表示线性表的长度,listsize表示线性表的最大容量。顺序存储结构的优点是随机访问速度快,因为...