線性表 順序表

2021-10-18 20:14:45 字數 3209 閱讀 3607

資料結構

資料之間的三種關係:

1、邏輯關係

(1)線性結構:線性表、佇列、棧

(2)非線性結構:樹、圖

2、儲存關係

(1)順序儲存

(2)鏈式儲存

(3)索引儲存

(4)雜湊儲存

3、資料關係

檢索、排序、插入、刪除、修改等

線性表的定義:線性表就是零個或多個相同資料元素的有限序列

線性表的特徵:

(1)對於非空表,第乙個是表頭,沒有前驅

(2)最後乙個是表尾,沒有後繼

(3)其他的每個元素有且僅有乙個前驅和乙個後繼

程式設計:seqlist.c

#include #include #include "seqlist.h"

//建立

seqlist_t *create_seqlist(void)

l->last = -1;

return l;

}//釋放某個順序表

void clear_seqlist(seqlist_t *l)

free(l);

return ;

} /*

//判斷是否為空

int is_empty_seqlist(seqlist_t *l)}*/

//判斷是否為滿

int is_full_seqlist(seqlist_t *l)

return (l->last == maxsize-1);

}//設定為空

void set_empty_seqlist(seqlist_t *l)

l->last = -1;

return ;

}//獲取順序表的長度

int get_length_seqlist(seqlist_t *l)

return (l->last+1);

}//列印順序表的元素

void show_seqlist(seqlist_t *l)

for(i = 0;i < l->last;i++)

printf("l->data[%d] = %d\n",i,l->data[i]);

return ;

}//插入值x到位置pos

int insert_seqlist(seqlist_t *l,data_t x,int pos)

for(i = l->last+1;i>=pos;i--)

l->data[i+1] = l->data[i];

l->data[pos] = x;

l->last++;

return 0;

}//刪除pos位置的值

int delete_seqlist(seqlist_t *l,int pos)

for(i=0;i<=get_length_seqlist(l);i++)

l->data[i] = l->data[i+1];

l->last--;

return 0;}

//將pos位置的值改為x

int change_seqlist(seqlist_t *l,data_t x,int pos)

l->data[pos] = x;

return 0;}

//查詢值x的位置

int search_seqlist(seqlist_t *l,data_t x)

return -1;

}

seqlist.h

#ifndef _seqlist_h_

#define _seqlist_h_

#define maxsize 100

typedef int data_t;

typedef structseqlist_t;

//建立

seqlist_t *create_seqlist(void);

//釋放某個順序表

void clear_seqlist(seqlist_t *l);

//判斷是否為空

int is_empty_seqlist(seqlist_t *l);

//判斷是否為滿

int is_full_seqlist(seqlist_t *l);

//設定為空

void set_empty_seqlist(seqlist_t *l);

//獲取順序表的長度

int get_length_seqlist(seqlist_t *l);

//列印順序表的元素

void show_seqlist(seqlist_t *l);

//插入值x到位置pos

int insert_seqlist(seqlist_t *l,data_t x,int pos);

//刪除pos位置的值

int delete_seqlist(seqlist_t *l,int pos);

//將pos位置的值改為x

int change_seqlist(seqlist_t *l,data_t x,int pos);

//查詢值x的位置

int search_seqlist(seqlist_t *l,data_t x);

#endif

test.c

#include #include #include "seqlist.h"

int main(int argc,char **ar**)

makefile

cc = gcc

cflags = -o0 -g -wall

test:test.c seqlist.c

$(cc) $(cflags) -o $@ $^

.phony:clean

clean:

rm -rf test

補充一點:

linknode n1;

n1.data = 10;

n1.next = null;

//這是靜態分配,存放在棧上

linklist p;

p = (linklist)malloc(sizeof(linknode));

//動態分配,存放在堆上

線性表 順序表

1 線性表 線性表是最基本 最簡單 也是最常用的一種資料結構。線性表中資料元素之間的關係是一對一的關係,即除了第乙個和最後乙個資料元素之外,其它資料元素都是首尾相接的。線性表的邏輯結構簡單,便於實現和操作。因此,線性表這種資料結構在實際應用中是廣泛採用的一種資料結構。線性表 list,零個或多個資料...

線性表 順序表

線性結構的特點是 在非空的有限集合中,只有唯一的第乙個元素和唯一的最後乙個元素。第乙個元素沒有直接前驅元素,最後乙個沒有直接的後繼元素。其它元素都有唯一的前驅元素和唯一的後繼元素。要想將線性表在計算機上實現,必須把其邏輯結構轉化為計算機可識別的儲存結構。線性表的儲存結構主要有兩種 順序儲存結構和鏈式...

線性表 順序表

基本思想 用一段位址連續的儲存單元一次儲存線性表的資料元素 隨機訪問 注意事項 c 語言中陣列下標是從0開始的,而線性表中元素序號是從1開始的,也就是說 線性表中第i個元素儲存結構在陣列中下標為i 1的位置。首先是大體的函式宣告 const int maxsize 100 根據實際問題定義具體的大小...