动态顺序表的实现

本文介绍了动态顺序表的基本概念和数据结构,包括用数组和指针两种方式表示顺序表。详细阐述了线性表的基本操作,如初始化、动态分配内存、插入元素和删除元素,并提供了完整的测试用例。
摘要由CSDN通过智能技术生成

顺序表基本概念

顺序表是用一组连输地址实现的线性表,其优点是可以随机访问表中元素和修改指定位置元素比较简单,但插入和删除元素需要移动元素,表长扩展也比较麻烦.

顺序表基本数据结构

用数组表示

用一维数组来表示顺序表,这样实现方法较为简单但数组大小确定后无法更改难以适应表长的变化。

	typedef struct{
		ElenType data[MaxSize];	//用长度为MaxSize的数组来存储元素
		int length;	//length表示表中数据个数
		}SeqList;

用指针表示

使用指针的好处是可以动态的分配线性表的长度,但使用时要注意指针越界和指针悬空的情况。

	typedef struct{
        ElemType *data;  //定义线性表指针用以动态分配内存 
        int MaxSize,Length; 
        //MaxSize表示线性表最大长度,Length表是表内元素个数 
        }SeqList;
用指针的好处是可以动态的分配内存.来增加表的长度

线性表基本操作

初始化

初始化线性表,为线性表分配空间。用size记录线性表空间大小,用Length记录线性表中元素的个数。

	//初始化线性表 
	SeqList intList(int Size){
        SeqList T;
        //分配空间 
        T.data = (ElemType*)malloc(sizeof(ElemType)*Size);
        T.MaxSize = Size;  //更新数组参数 
        T.Length = 0;  //更新数组参数 
        return T;
        }

动态分配内存

当线性表内存不足时再给线性表分配size个存贮空间,注意重定位使原来表中的元素不至于丢失。


//增加线性表长度     
SeqList toLong(SeqList T){
        ElemType *p = T.data;
        int SizeNew = T.MaxSize+MAXSIZE;
        //重新分配空间 
        T.data = (ElemType*)malloc(sizeof(ElemType)*SizeNew);
        T.data = p; //重新定位 
        T.MaxSize = SizeNew;    //更新参数 
        return T;
        }

插入元素

在表尾插入元素时只需将元素添加到表的末端即可(相当于添加元素),若在表中插入元素则需要后移元素,同时当表空间不足时当掉用增加空间的函数。

//插入元素e 
SeqList listInsert (SeqList T,int i,ElemType e){
    int j;
    if(i<1){
        //输入参数小于1 
        printf("\n参数不合法\n"); 
        return T;
        }else{
            if(i<=T.MaxSize){
                if(T.Length<T.MaxSize){
                    if(i>T.Length){
                        //表未满,插入位置在表尾后 
                        for(j=T.Length;j<i-1;j++){
                            T.data[j] = 0;
                        }
                        T.data[i-1] = e;
                        T.Length = i;
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值