C语言表结构(一)

线性表是一类最简单也是实际应用最多的线性数据结构。

线性表可以栈、队列、字符串、数组等特殊线性表的形式来使用。

线性表是n个元素的有限序列,元素可以是各种各样的,但必须具有相同的性质,属于同一数据对象。

本篇文章介绍线性表的顺序结构:即在内存中用地址连续有限的一块存储空间依次顺序存放线性表的各个元素,用这种存储形式存储的线性表称为顺序表。

假设线性表的每个元素占L个存储单元,若知道第一个元素的地址(基地址),设为Loc(a1),者第i个数据元素的地址为:Loc(ai)=Loc(a1)+(i-1)*L 1<

可见,只要知道基地址和每个元素所占空间的大小,就可以用相同的时间迅速求出任一元素的存储地址,因此顺序表是一种随即存储结构。在C语言中用一维数组来表示。

1、顺序存储结构的线性表类型定义如下:

<code>#define MAXSIZE 100  //定义顺序表的最多容量typedef struct{  elementype data[MAXSIZE];  //存放线性表的数组  int length;  //当前长度}SqList;/<code>

线性表的顺序结构是一个结构体,其中数据域data是线性表中元素占用的数组空间。有于C语言中数组下标是从0开始的(假定线性表有n个元素),因此第(1<

2、顺序表的初始化:

<code>/*顺序表的初始化*/int Initlist(SqList *L){  L->elem=(char *)malloc(LIST_INIT_SIZE*sizeof(char));  if(!L->elem)    exit(OVERFLOW);  L->length=0;  L->listsize=LIST_INIT_SIZE;  return OK;}/<code>

实战检验一:

<code>#include<stdio.h>#include<stdlib.h>#define OK 1#define OVERFLOW 0#define LIST_INIT_SIZE 100#define LISTINCREMENT 10typedef struct{  char *elem;  int length;  //当前长度  int listsize;  //线性表的长度}Sqlist;/*线性表的初始化*/int InitList(Sqlist *L){  L->elem=(char*)malloc(LIST_INIT_SIZE*sizeof(char*));  if(!L->elem)exit(OVERFLOW);  L->length=0;  L->listsize=LIST_INIT_SIZE; return OK;}int main(){  int i;  Sqlist L;  i=InitList(&L);  printf("i=%d\\n",i);  return 0;}/<stdlib.h>/<stdio.h>/<code>


C语言表结构(一)

规范代码请点击:https://www.cnblogs.com/gufengchen/p/12268156.html


分享到:


相關文章: