1、線性表
線性表是最基本、最簡單、也是最常用的一種資料結構。線性表中資料元素之間的關係是一對一的關係,即除了第乙個和最後乙個資料元素之外,其它資料元素都是首尾相接的。線性表的邏輯結構簡單,便於實現和操作。因此,線性表這種資料結構在實際應用中是廣泛採用的一種資料結構。
線性表——list,零個或多個資料元素的有限序列。
首先它是乙個序列。也就是說,元素之間是有順序的,若元素存在多個,則第乙個元素無前驅,最後乙個元素無後繼,其他每個元素都有且只有乙個前驅和後繼。
例子:假設la表示集合a,lb表示集合b,現在要得到乙個集合a使得a=aub
void unionl(sqlist *la,sqlist lb)
}
1.1 順序儲存結構
線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表的資料元素。
就是在記憶體中找了塊地方,通過佔位的形式,把一定記憶體空間給佔了,然後把相同資料型別的資料元素依次存放在這塊空地中。
既然資料元素的型別都相同,所以可以用c語言(其他語言也相同)的一維陣列來實現順序儲存結構,即把第乙個資料元素存到陣列下標為0的位置中,接著把線性表相鄰的元素儲存在陣列中相鄰的位置。
線性表的順序儲存結構的**如下:
#define maxsize 20
/* 儲存空間初始分配量 */
typedef
int elemtype; /* elemtype型別根據實際情況而定,這裡假設為int */
typedef
struct
sqlist;
這裡,我們發現描述順序儲存結構需要三個屬性:
儲存空間的起始位置——陣列data,它的儲存位置就是儲存空間的儲存位置。
線性表的最大儲存容量——陣列長度maxsize
線性表的當前長度length
注意:線性表的長度應該小於等於陣列的長度。
順序表**如下:
#include
#include
#include
using
namespace
std;
#define maxsize 20
typedef
int elemtype;
typedef
struct
sqlist;
sqlist init()
sqlist createlist(sqlist l, int n)
return l;
}void printlist(sqlist l)
cout
結果:
843
01process returned 0 (0x0) execution time : 0.223 s
press any key to continue.
線性表 順序表
線性結構的特點是 在非空的有限集合中,只有唯一的第乙個元素和唯一的最後乙個元素。第乙個元素沒有直接前驅元素,最後乙個沒有直接的後繼元素。其它元素都有唯一的前驅元素和唯一的後繼元素。要想將線性表在計算機上實現,必須把其邏輯結構轉化為計算機可識別的儲存結構。線性表的儲存結構主要有兩種 順序儲存結構和鏈式...
線性表 順序表
基本思想 用一段位址連續的儲存單元一次儲存線性表的資料元素 隨機訪問 注意事項 c 語言中陣列下標是從0開始的,而線性表中元素序號是從1開始的,也就是說 線性表中第i個元素儲存結構在陣列中下標為i 1的位置。首先是大體的函式宣告 const int maxsize 100 根據實際問題定義具體的大小...
線性表 順序表
線性表的adt list.h templateclass list 順序表的事先宣告 沒有定義成內嵌的順序表成員函式的實現 alist.h include stdafx.h include list.h define defaultlistsize 255 template class alist ...