搜尋(1) 符號表

2021-07-01 19:05:25 字數 1752 閱讀 3053

參考資料

搜尋:我們把處理的資料劃分為記錄或資料項(item),每個資料項都有乙個用於搜尋的關鍵字(key)。搜尋的目標是找出目標關鍵字所匹配的資料項。搜尋的目的是訪問這個資料項(不僅是關鍵字)中的資訊。

符號表:它是一種資料結構,其中資料項含有關鍵字。它支援兩個基本的操作:插入乙個新的資料項和搜尋返回給定關鍵字的資料項。(字典)

如何處理符號表中相同關鍵字?

在符號表的實現中應注意考慮可能楚翔相同關鍵字的資料項。在某些應用(如身份證資訊)中不允許出現重複關鍵字,此時,關鍵字可以作為控制代碼。其他包含大量相同關鍵字的應用(如文件資料庫),關鍵字搜尋會有多個查詢結果。有以下三種處理方法:

(1)在主資料結構中的關鍵字保持都不同,即將具有相同關鍵字的資料項組合到一起,形成乙個鏈結。search 時返回所有給定關鍵字對應的所有資料項;delete 時刪除所有給定關鍵字對應所有資料項。

(2)在主資料結構中關鍵字可以相同,search 時返回任意乙個給定關鍵字的資料項,delete 時刪除任意乙個。

(3)給每乙個資料項新增另外的識別符號(唯一),搜尋和刪除時給出關鍵字和識別符號

根據應用的期望時間和空間要求,有四種符號表的實現方法:

(1)有序陣列:頻繁使用排序或選擇 select

(2)有序鍊錶:頻繁使用排序,頻繁選擇時應選用有序陣列,鍊錶只能順序訪問

(3)無序陣列:頻繁插入

(4)無序鍊錶:頻繁插入

其中,鍊錶較之陣列的優點是,不需**出表的大小,缺點是額外占用空間(存放鏈結),且不能高效支援選擇操作。

插入時,猶如插入排序時,將較大元素向後移動位置,將新的元素插入陣列中

static item *st;

static

int n;

void stinit(int maxn)

int stcount()

void stinsert(item item)

st[j] = item;

}item stsearch(key v)

return nullitem;

}item stselect(int k)

void stsort(void (*visit)(item))

//不完整**,僅供簡略檢視原理

#include

#define key(a) (a - 'a')

#define nullitem -1

typedef

struct element item;

typedef

struct element

;typedef

struct stnode* link;

typedef

struct stnode

stnode;

static

int n; //表元素的個數

static link head, z;

link new(item item, link next)

link stinit()

//**********===search***************

item searchr(link t, key v)

item stsearch(key v)

link stinsert(item item)

《演算法:c語言實現》p307 - p316

邏輯符號表

邏輯符號表 跳轉到 導航,搜尋 在邏輯中,經常使用一組符號來表達邏輯結構。因為邏輯學家非常熟悉這些符號,他們在使用的時候沒有解釋它們。所以,給學邏輯的人的下列 列出了最常用的符號 它們的名字 讀法和有關的數學領域。此外,第三列包含非正式定義,第四列給出簡短的例子。要注意,在一些情況下,不同的符號有相...

數學符號表

符號 名稱定義 舉例讀法 數學領域 等號y xy1 1 2 等於所有領域 不等號x y xy 不等於 所有領域 嚴格不等號 xyx3 4 5 4 小於,大於 序理論 不等號x y x yx 3 4 5 5 5 4 5 5 小於等於,大於等於 序理論 加號 4 6 表示 4 加 6。2 7 9加算術 ...

核心符號表

linux核心為了實現模組化,需要提供乙個公共的核心符號表,它包含了所有的全域性核心項 函式以及變數 的位址。當模組載入到核心中後,它所匯出的任何符號都將成為核心公共符號表的一部分。核心模組只需要實現自己的功能而無需匯出任何符號,但這樣其他模組將無法使用該模組的功能,乙個新的模組可以使用自己其他模組...