-
建立順序表如下:
通過陣列元素 a[0..n-1] 建立順序表 l。 a 中的每個元素都按順序放置在順序表中,n 被分配給順序表的長度字段。 演算法為:
int i=0, k=0;
l = (sqlist *)malloc(sizeof(sqlist));分配空間以儲存線性表。
while(il->data[k] = a[i];
k++;i++;
l->length = k;將線性表的實際長度設定為 k(即 a 的長度 n)。
-
事實上,當你編寫線性表的基本操作時,你用陣列(線性表)來描述它。
typedef struct arraylist;線性表 void initlist(arraylist *l);
void destroylist(arraylist *l);
int *getelem(arraylist *l, int i);
int listinsert(arraylist *l, int i, int e);
int listdelete(arraylist *l, int i);
-
如果修復此輸入順序,則可以先設定陣列。 資料可以在迴圈中按順序輸入,-1 作為輸入終止條件。
-
線性表的定義
線性表是一種線性結構,線性結構的特點是資料元素之間存在線性關係,資料元素乙個接乙個地排列,線性表中資料元素的型別相同,或者線性表是由同一型別的資料元素組成的線性結構, 在實際問題中,線性表的例子很多,比如學生資訊表是線性表,表中資料元素的型別是學生型別;字串也是乙個線性表,表中的資料元素是字元型別,依此類推。
總之,線性表的定義如下。
線性表是 n(n>= 相同資料型別的資料元素的有限序列,通常表示為 。
a a … ai ai ai+ …an)
其中 n 是表的長度,n= 稱為空表。
表中相鄰元素之間存在順序關係:ai 稱為 ai 的直接前身,ai+ 稱為 ai 的直接後繼者,即對於 ai,當 i= n 時,存在且只有乙個直接前身 ai,當 i= n 時,存在且只有乙個直接後繼 ai+,a 是表中的第乙個元素, 它沒有前身,an 是最後乙個元素,沒有後繼者。
應該注意的是,ai 是乙個序數為 i (i= ...n)通常我們將其資料型別抽象為datatype、datatype,視具體問題而定,例如在學生資訊表中,它是使用者定義的學生型別;在字串中,它是字元型別; 等一會。
lishixinzhi/article/program/sjjg/201311/23935
-
線性結構的特點有乙個唯一的資料元素稱為第乙個 有乙個唯一的資料元素稱為最後乙個 除了第乙個 集合中的每個資料元素只有乙個前置任務 除了最後乙個 集合中的每個資料元素只有乙個後繼資料元素。
線性表的定義線性列表是 n(n>) 個相同性質的資料元素的有限序列,表示為 (a, a, a...)。乙個)表n中的資料元素數定義為線性表的長度 表n=稱為空表,即線性表不包含任何資料元素,並且遮蔽元素的數量 線性表的兩種儲存結構 狀態順序儲存 Bimin 結構(順序表) 鏈儲存結構(鍊表)。線性表上的操作
lishixinzhi/article/program/sjjg/201311/23826
-
初始條件線性表 l 存在。
操作結果:在表l中查詢值為x的資料元素,結果返回值為x的元素的序號或位址,該元素的序號或位址首次出現在l中,稱為搜尋成功; 否則,在 l 中找不到值為 x 的資料元素,並返回乙個特殊值,指示查詢失敗。
插入操作 insert list(l i x)。
初始條件:線性表l存在,插入位置正確,插入前的表長度為(i<=n+n為插入前的表長度)。
操作結果 **在性別表l的第i個位置插入乙個值為x的新元素,使原序列號為i i+n的資料元素的序列號在插入表長度=原表長度+後變為i+ i+ n+
刪除 list(l i)。
初始條件:線性表 l 存在 <=i<=n
結果 **刪除表L中序號為i的資料元素 刪除後,序號為i+i+n的元素成為序號i i + n的新錶長度=原來的表長度。
應該澄清。
乙個資料結構上的基本操作並不是它的全部操作,而是一些常用的基本操作,每個基本操作在實現時也可能根據不同的儲存結構衍生出一系列相關的操作,比如線性表的嘈雜搜尋,鏈儲存結構中會有序號搜尋; 不可能也沒有必要定義它的所有操作,在讀者掌握了某個資料結構上的基本操作後,其他操作可以通過基本操作來實現,也可以直接實現。
上述操作中定義的線性表L只是邏輯結構層面的抽象線性表,其儲存結構尚未涉及,因此每個操作都無法在邏輯結構層面用特定的程式語言編寫特定的演算法,只有在建立儲存結構後才能實現演算法的實現。
lishixinzhi/article/program/sjjg/201311/23934
-
在資料結構中,線性結構是指元素之間的一對一線性關係,即每個元素只有乙個直接前體和乙個直接後繼者。 線性結構主要包括以下幾種:
1.陣列:陣列是最簡單的線性結構,元素連續儲存在記憶體中,其中的元銀蘆丁可以通過下標訪問。 陣列的查詢和修改效率非常高,但插入和刪除速度相對較慢。
2.鍊表:鍊表由多個節點組成,每個節點都包含資料和指向下乙個節點的指標。 插入和刪除鍊表非常高效,但查詢和修改需要遍歷整個鍊表。
3.堆疊:堆疊是覆蓋巨集的線性結構,只能在堆疊頂部插入和刪除。
4.佇列:佇列是一種先進先出(FIFO)線性結構,只能在佇列末尾插入元素,在佇列頭部刪除元素。
5.堆:堆是一種特殊的樹結構,它滿足每個節點的值大於或等於(或小於)其子節點的值。 堆通常用於實現資料結構,例如優先順序佇列。
上述線性結構各有優缺點,根據具體的應用場景和需求選擇合適的資料結構可以提高程式的效率和效能。
-
1. 線性表的定義。
1.定義。 線性表是 n(n 0) 個相同資料型別的資料元素的有限序列。 其中 n 是表的長度,當 n=0 時,線性表為空表。 如果線性表以 l 命名,則通常表示為。
l=(a1,a2…ai…an)
其中 A1 是唯一的第乙個資料元素,也稱為標頭元素; an 是唯一的最後乙個資料元素,也稱為頁尾元素。
2.邏輯屬性。
除第乙個元素外,每個元素都有乙個且只有乙個直接前體。 除最後乙個元素外,每個元素都有乙個且只有乙個直接繼承者。
3.線性表的特點。
1)表中的元素數量有限;
2)表中的元素有邏輯順序,序列中每個元素的順序都有其順序;
3)表中的元素都是資料元素,每個元素都是乙個元素(單個資料項);
4)表中元素的資料型別相同,即每個元素占用的儲存空間大小相同;
5)表中的元素是抽象的,只討論元素之間的邏輯關係,而不考慮元素代表什麼。
注: 線性表是一種邏輯結構,表示元素之間的一對一鄰接關係。 順序表和鍊表是儲存結構,不是同乙個概念!
二、線性工作台的基本操作。
最基本的操作:新增、刪除、修改和搜尋。
initlist (
length(l):求表的長度。 返回線性表 l 的長度,即 l 中的資料元素數;
locateelem(l,e):按值查詢操作。 在表 L 中查詢具有給定關鍵字值的元素;
Getelem(l,i):按位搜尋操作。 將指定的元素E插入表L中的第i個位置;
listinsert(&l,i,e):插入操作。 將指定的元素E插入表L中的第i個位置;
listDelete(&l,i,e):刪除操作。 刪除表l中第i位的元素,用e返回已刪除元素的值;
printlist(l):輸出操作。 按前後順序輸出線性表l的所有元素值;
empty(l):nall 操作。 如果 l 為空表,則返回 true,否則返回 false。
destroylist (
注意:基本操作的實現取決於用於激勵的儲存結構。 其中“&”表示 C++ 中的引用。
雜湊表(也稱為雜湊表)是一種基於鍵值直接訪問的資料結構。 也就是說,它通過將鍵值對映到表中的位置來訪問記錄,以加快查詢速度。 此對映函式稱為雜湊函式,儲存記錄的陣列稱為雜湊表。 >>>More
1. 如果節點的左子樹和右子樹,則左鏈結字段 lchild 表示其左子節點 (ltag = 0),否則,左鏈結字段表示其前身 (ltag = 1)。 如果節點具有右子樹,則右鏈結字段 rchild 表示其右子節點 (rtag = 0),否則,右鏈結字段表示其後繼節點 (rtag = 1)。 >>>More
演算法相似,但語言描述不同,C是基礎! 但是,C++語言相對簡單,所以習慣哪一種就好了!! 資料結構多用在C++中,這取決於你用的是哪個版本的教科書,如果你學的是C++,那麼用的是C++版本的教科書,問題不是很大!! >>>More