C/C++数据结构:线性表的顺序存储

线性表的顺序存储结构

特点:
1、物理地址相邻
2、随机存取:可以计算出每个数据元素的存储地址(数组

在数据结构(严蔚敏C语言)中,顺序表实现的代码如下:
时间复杂度的分析:

顺序表时间主要花费在移动元素中,移动元素的个数取决于插入或删除元素的位置

结论:
顺序表中插入或删除一个数据元素,平均移动一半的元素
算法ListInsert_Sq和ListDelete_Sq的时间复杂度为O(n)

//初始化文件
#ifndef _INIT_H
#define _INIT_H

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;

#define TRUE 1
#define FALLSE 0
#define OK 1
#define ERROR -1
#define OVERFLOW NULL
typedef int Status;

#endif

头文件

#ifndef _SEQUENCE_H

#define LISTSIZE 100 

#define LISTINCEREMENT 10
typedef int Item;

typedef struct  
{
   
	Item add[LISTSIZE];
	int length;
}SqList;


Status init_sqlist(SqList &L);
Status insert_list(SqList &L,int i,Item e);//插入元素e到顺序列表的第i个位置
Status delete_list(SqList &L,int i,Item &e);//删除第i个元素并返回给e;
Status display_list(SqList);
Status merge_list(SqList La,SqList Lb,SqList &Lc);//合并两个顺序列表


#endif 

.cpp文件

#include "init.h"
#include "Sequence.h"
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;

Status init_sqlist(SqList &L)//构造空表L
{
   
	L.length=0;
	return OK;
}

Status insert_list(SqList &L,int i,Elemtype e)//插入e元素到第i位
{
   
	if (i<1||i>L.length+1)
	{
   
		return ERROR;//i值不合法
	}
	if (L.length>=L.listsize)//超出原有的存储容量,需要重新分配
	{
   
	    Elemtype *newbase;
		newbase=(Elemtype *)realloc(L.elem,(L.listsize+LISTINCEREMENT)*sizeof(Elemtype));
		if (!newbase)
		{
   
			exit(OVERFLOW);
		}
		L.elem=newbase;//新基址
		L.listsize +=LISTINCEREMENT;//增加的存储容量
	}
    Elemtype *q,*p;
	q=&L.elem[i-1];//q为插入位置
	for (p=&L.elem
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值