线性表作为一种基本的数据结构类型, 在计算机存储器中的映象( 或表示) 一般有两种形式, 一种是顺序映象, 一种是链式映象。
若将线性表L=(a0,a1, ……,an-1)中的各元素依次存储于计算机一片连续的存储空间,如图所示。 这种机内表示为线性表的顺序存储结构。
顺序存储结构的特点:
– (1)逻辑上相邻的元素 ai, ai+1, 其存储位置也是相邻的;
– (2)对数据元素ai的存取为随机存取或按地址存取。
– (3)存储密度高。 存储密度D=(数据结构中元素所占存储空间)/( 整个数据结构所占空间) 。
顺序存储结构的不足:
– 对表的插入和删除等运算的时间复杂度较差。
#ifndef __SEQLIST_H__
#define __SEQLIST_H__
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define MAX 100
typedef int datatype;
typedef struct seqlistnode
{
datatype data[MAX];
int last;
}slnode,*slpnode;
extern bool is_full_sl(slpnode p);
extern bool is_empty_sl(slpnode p);
extern void init_sl(slpnode *P);
extern void insert_sl(slpnode p,datatype val,int pos);
extern int get_length_sl(slpnode p);
extern void set_empty_sl(slpnode p);
extern void clear_sl(slpnode p);
extern void delete_sl(slpnode p,int pos);
extern void change_sl(slpnode p,datatype val,int pos);
extern int search_sl(slpnode p,datatype val);
extern datatype get_sl(slpnode p,int pos);
extern void merge_sl(slpnode p,slpnode q);
extern void show_sl(slpnode p);
#endif
#include "seqlist.h"
bool is_full_sl(slpnode p)
{
if(NULL == p)
{
perror("Malloc failed");
exit(-1);
}
if(p->last == MAX-1)
return true;
return false;
}
bool is_empty_sl