#include "stdio.h"
#include "conio.h"
#define MaxSize 10
typedef int ElemType;
typedef struct{
int * elem;
int length;
int listsize;
}Sqlist;
void initSqlist(Sqlist *L){
L->elem=(int*)malloc(MaxSize*sizeof(ElemType));
if(!L->elem)exit(0);
L->length=0;
L->listsize=MaxSize;
}
void InsertElem(Sqlist *L,int i,ElemType item){
ElemType *base,*insertPtr,*p;
if(i<1||i>L->length+1)exit(0);
if(L->length>=L->listsize){
base =(ElemType*)realloc(L->elem,(L->listsize+10)*sizeof(ElemType));
L->elem=base;
L->listsize=L->listsize+100;
}
insertPtr=&(L->elem[i-1]);
for(p=&(L->elem[L->length-1]);p>=insertPtr;p--)
*(p+1)=*p;
*insertPtr=item;
L->length++;
}
void DelElem(Sqlist *L,int i){
ElemType *delItem,*q;
if(i<1||i>L->length)exit(0);
delItem=&(L->elem[i-1]);
q=L->elem+L->length-1;
for(++delItem;delItem<=q;++delItem) *(delItem-1)=*delItem;
L->length--;
}
main(){
Sqlist l;
int i;
initSqlist(&l);
system("cls");
printf("init....");
printf("%d\n",l.listsize);
for(i=0;i<=8;i++) {
printf("%d\n",i+1);
InsertElem(&l,i+1,i+1);
}
printf("\nelem is:\n");
for(i=0;i<l.length;i++)
printf("%d\n",l.elem[i]);
DelElem(&l,5);
for(i=0;i<l.length;i++)
printf("%d\n",l.elem[i]);
getche();
}
分享到:
相关推荐
本文档将详细介绍如何在C语言中实现顺序表的基本操作——插入和删除。顺序表是一种线性表,其特点是通过连续的内存空间来存储数据元素,这使得我们可以利用数组的特性来进行高效的访问和操作。本文档旨在帮助读者...
顺序表可以看作是一个动态数组,它的优点在于插入和删除操作在理想情况下时间复杂度为O(1),但当数组满时,需要进行扩容操作,此时时间复杂度会增加到O(n)。在我们的场景中,顺序表将用来存储单词及其对应的出现次数...
根据给定文件的信息,我们可以详细地探讨顺序表的插入与删除操作的相关知识点。 ### 一、顺序表的基本概念 顺序表是一种线性表的存储结构,它通过一组地址连续的存储单元来依次存储线性表中的各个元素。顺序表的...
根据给定的文件信息,我们可以总结出以下关于“顺序表表示集合,实现集合的交、并、差运算”的详细知识点: ### 一、基础知识概述 #### 1. 顺序表概念 顺序表是一种线性表的数据结构,它通过一组地址连续的存储...
C++在C语言的基础上增加了类和对象的概念,因此在C++中实现顺序表,我们可以定义一个名为`SequentialList`的类,该类包含一个动态分配的数组以及当前元素的数量。类的方法可以包括`insert`、`delete`、`search`等,...
在C语言中,我们可以使用数组来实现顺序表。数组是一种固定大小的数据集合,可以存储相同类型的数据,每个元素都有一个唯一的索引,从0开始。 1. 顺序表的基本操作: - 插入:在顺序表中插入一个元素,可能需要...
顺序表是由一组相同类型元素按线性顺序排列的数组,它的主要操作包括添加元素、删除元素、查找元素以及对元素进行排序。接下来,我们将详细讨论这些知识点。 1. **顺序表的添加操作**: 在C语言中,向顺序表添加...
根据给定的信息,本文将详细解释“数据结构顺序表操作”的关键知识点,特别是与C语言相关的部分。 ### 数据结构概述 在计算机科学中,数据结构是特定类型数据元素的集合及其关系的表示方法,用于组织、管理和存储...
### 顺序表与链表详解 #### 一、概述 本文档主要介绍顺序表和链表这两种基本的数据结构。在计算机科学中,数据结构是指在计算机中组织和存储数据的一种特殊方式,它允许高效地访问和修改数据。顺序表和链表作为...
2. **基本操作实现**:学会在C语言中定义顺序表,并实现顺序表的基本操作如初始化、插入、删除、查找等。 3. **多函数程序处理**:熟悉多函数程序的编写、调试及运行流程。 #### 二、顺序表基本操作 ##### 1. 初始...
在C或C++中实现顺序表,首先需要定义一个动态数组,然后设计一系列的方法来处理增删改查操作。例如,我们可以创建一个结构体或类来表示顺序表,包含数组元素和当前表的大小两个属性。接下来,定义如下的方法: 1. ...
6. **容量管理**:对于动态顺序表,需要有策略来决定何时以及如何扩大或缩小数组,如每次扩大一倍或增加固定数量。 7. **错误处理**:在实现过程中,应考虑边界条件和异常处理,如插入位置超出数组范围、删除不存在...
利用C++实现顺序表,并增加按值查询和按值删除,附加:支持多值删除和多值插入。
4. 遍历结束:当遍历完整个顺序表后,表中所有值为x的元素都被删除,且没有增加额外的空间。 这个算法的时间复杂度为O(n),因为我们只遍历了一次顺序表。空间复杂度为O(1),因为我们没有使用额外的存储空间,仅在...
在提供的压缩包文件中,`y.c`可能是实现顺序表的源代码文件,`y.dsp`和`y.plg`可能是开发工具(如Visual Studio)的项目文件,用于编译和调试。`Debug`目录可能包含了编译后的可执行文件和其他调试信息。这些文件...
在C语言中,我们通常使用数组来实现顺序表。优点是访问速度快,因为数组支持随机访问。但插入和删除操作相对复杂,需要移动大量元素。压缩包中的".c"和".h"文件应该包含了创建、插入、删除、查找等基本操作的函数...
总的来说,这个C程序展示了顺序表的基本操作,包括创建、插入、删除、查找和访问元素。在实际应用中,虽然顺序表操作简单,但其效率受到数组容量的限制,当需要频繁插入或删除元素时,链表或更高级的数据结构如红黑...
数据结构中的顺序表是一种线性表的实现方式,它是由n个具有相同特性的数据元素构成的有限序列。在线性表的逻辑结构中,元素呈线性排列,但在物理存储时,顺序表通常采用数组来实现,使得数据元素在内存中是连续存储...
删除操作通过函数 `del(SeqList*L, DataTypex)` 实现,其功能是从顺序表中删除编号为 `x.no` 的元素。实现步骤包括: - 遍历整个顺序表,查找指定编号的元素。 - 如果找到,则将该元素之后的所有元素向前移动一位。 ...
在C语言中实现顺序表需要注意内存管理,特别是在插入和删除操作中。插入可能需要扩大数组的容量,删除可能导致数组中的空洞。因此,为了优化内存使用,通常会使用固定步长的增量(如`LISTINCREMENT`)来扩展数组容量...