1.2.1 顺序表的定义
定义:顺序表是用一组地址连续的存储单元依次存储线性表中的数据元素,从而使的逻辑上相邻的两个元素在物理位置上也相邻。
特点:
- 表中元素的逻辑顺序与物理顺序相同。
- 随机访问,即通过首地址和元素序号可在时间O(1)内找到指定的元素。
- 存储密度高,每个节点只存储数据元素。
- 逻辑上相邻的元素物理上也相邻,所以插入和删除操作需要移动大量元素。
1.2.2 顺序表上基本操作的实现
(1)顺序表的建立
// 头文件SeqList.h开始
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
#define OVERFLOW 0
#define LIST_INIT_SIZE 100 // 存储空间初始分配量
#define LISTINCREMENT 10 //存储空间分配增量
typedef struct{
int *elem;
int length; //当前表长
int listsize; // 当前分配的存储容量
}SeqList;
int InitList_Seq( SeqList *L ){
//构造一个空的顺序表
L->elem = (int *)malloc(LIST_INIT_SIZE*sizeof (int));
if (!L->elem){
printf("Out of space!!\n"); //存储分配失败
exit(OVERFLOW);
}
L->length = 0;
L->listsize = LIST_INIT_SIZE;
return OK;
}
int Output_SeqList(SeqList L){
//输出顺序表
int i;
for(i=0;i<L.length;i++)
printf ("%4d",L.elem[i]);
printf("\n");
return OK;
}
int CreateList_Seq(SeqList L){
//建立顺序表
int i;
printf ("Input the datas: ");
for(i=0;i>;i++){
scanf ("%d",&L.elem[i]