`
CreazyApple
  • 浏览: 64877 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

顺序存储的线性表

 
阅读更多
/*
 * 顺序存储的线性表
 */
#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顺序存储线性表及合并两个线性表.cpp

    顺序存储线性表的基本运算(实验报告)_secret.doc

    在本实验中,我们将关注线性表的顺序存储方式,即通过数组来存储线性表的数据。 顺序存储线性表是用一维数组来实现的,数组中的每个元素对应线性表中的一个节点。它的优点是存储密度高,便于进行顺序存取,但插入和...

    顺序线性表的基本操作

    数据结构中的 顺序线性表的基本操作,适合刚学数据结构的同学用

    数据结构实验报告-实验:1线性表的顺序存储和操作实现.doc

    "数据结构实验报告-实验:1线性表的顺序存储和操作实现" 本实验报告的主要目的是为了实现线性表的顺序存储和操作,使用 Java 语言编写程序来实现顺序存储线性表的功能。实验中,我们定义了一个名为 `SequenceList` ...

    数据结构 实验1 顺序存储的线性表

    在本实验“数据结构 实验1 顺序存储的线性表”中,我们将聚焦于一种基础且重要的数据结构——顺序存储的线性表。线性表是一种一维的数据结构,它的元素按照特定的顺序排列,可以是数字、字符、或其他更复杂的数据...

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

    ### 顺序存储结构线性表的插入与删除 #### 知识点概述 在计算机科学领域,线性表是数据结构中最基本的数据组织形式之一,它由一系列具有相同特性的数据元素组成,这些元素之间存在着一种一对一的关系。线性表可以...

    线性表的动态顺序存储

    在实际应用中,线性表的存储方式主要有两种:顺序存储和链式存储。本话题主要关注的是线性表的动态顺序存储,即在内存中按元素的逻辑顺序连续分配存储空间的一种方式。 动态顺序存储的特点在于其灵活性。当线性表中...

    线性表顺序存储的创建插入删除

    初学者线性表顺序存储的创建插入删除查询。C语言课后作业。可供参考。

    线性表的顺序存储与实现

    在顺序存储结构下,线性表的元素被存储在一个连续的内存区域,这样的方式使得访问和操作变得高效。下面将详细讨论线性表的顺序存储及其实现,以及涉及到的基本操作。 顺序存储的线性表通常使用数组来实现。数组是一...

    实验一 顺序结构线性表基本操作的实现

    实验一 顺序结构线性表基本操作的实现 线性表基本操作的实现 线性表的顺序存储有何优缺点?

    线性表的顺序存储实现

    线性表的顺序存储的c语言实现,带有注释,简洁明了,一看即懂

    C语言基于顺序存储的线性表

    在这个场景中,我们关注的是在C语言中实现基于顺序存储的线性表,即数组形式的线性表。顺序存储意味着所有元素在内存中是连续存放的,这种存储方式便于直接访问和操作。 首先,我们需要了解线性表的基本操作: 1. ...

    两个非递减存储顺序线性表归并为非递减顺序线性表

    线性表可以用数组或链表来实现,本文中我们使用顺序存储的方式,即使用数组来存储元素。 线性表的实现需要定义一个类,包括构造函数、析构函数、输入函数、输出函数和归并函数等。构造函数用于分配内存空间,析构...

    顺序存储的线性表基本算法实现

    顺序存储的线性表是一种常见的数据结构,它通过在内存中连续分配空间来存储元素,便于进行各种操作。在这个特定的实现中,线性表的数据类型是字符(char),但其实这种实现方式同样适用于其他基本数据类型。以下是该...

    线性表顺序存储运算的算法实现

    在计算机科学中,线性表的顺序存储是常用的数据组织方式,其特点是元素在内存中按顺序连续存放。本话题将深入探讨线性表的顺序存储结构及其在C语言中的算法实现,包括线性表的输入输出、插入、删除以及长度和置空...

    顺序存储结构线性表c程序源码

    在这个特定的压缩包中,"顺序存储结构线性表c程序源码"提供了C语言实现线性表操作的代码。 线性表的顺序存储是指所有元素在内存中占用连续的存储空间,通过数组来实现。这种方式的优点是访问速度快,因为数组中的...

    顺序线性表

    1. 存储方式:顺序线性表采用顺序存储,即数据元素在内存中是顺序存放的,元素间的逻辑关系通过物理位置来体现。 2. 访问效率:由于元素在内存中是连续的,所以可以通过索引直接访问任意位置的元素,时间复杂度为O(1...

    线性表顺序存储的实现

    在顺序存储的线性表中,元素按照它们在内存中的位置顺序进行排列,这种存储方式简单直观,易于理解和操作。本文将深入探讨线性表顺序存储的实现,以及与其相关的算法和数据结构知识。 首先,顺序存储结构通常采用...

    关于线性表的顺序存储和链式存储结构的实验报告

    在这个实验报告中,顺序存储结构通过定义一个结构体来表示线性表,包括三个字段:elem表示线性表首元素的地址,length表示线性表的长度,listsize表示线性表的最大容量。顺序存储结构的优点是随机访问速度快,因为...

Global site tag (gtag.js) - Google Analytics