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>


規範代碼請點擊:https://www.cnblogs.com/gufengchen/p/12268156.html