資料結構與演算法分析 用C語言實現單鏈表

2021-06-22 03:09:33 字數 2204 閱讀 4096

掌握單鏈表很容易,把下面的**弄懂,敲幾遍,全部記住,而且記清每乙個細節。

首先,在list.h中宣告單鏈表的adt.我們把我們所需要的自定義型別啊,函式啊,都宣告出來,但這裡我們只是宣告他們,而具體實現則是在list.c中進行。

/**

* @file list.h

* @brief 單鏈表的宣告

* @details

* @author [email protected]

* @date 2014-5-19

*/#ifndef _list_h

//先宣告實現單鏈表時所需的型別和結構,包括乙個節點結構體,元素型別,指向元素的指標型別(同樣可以用來表示單鏈表本身和元素位置)

struct node;

typedef int elementtype; //此處根據鍊錶中元素型別的不同 可以修改

typedef struct node *ptrtonode;

typedef ptrtonode list;

typedef ptrtonode position;

//接下來宣告一些常用的函式,一定要記住這些函式,因為這些函式都是最常用最基礎的

list makeempty(list l); //置空鍊錶

int isempty(list l); //判空鍊錶

int islast(position p,list l); //判斷是否為表尾

position find(elementtype x,list l); //找出元素所在位置

void delete(elementtype x,list l); //刪除元素

position findprevious(elementtype x,list l); //找到某元素的前驅

void insert(elementtype x,list l,position p); //插入乙個元素

void deletelist(list l); //刪除鍊錶

position header(list l); //返回頭結點

position first(list l); //返回第乙個元素

position advance(position p); //返回後乙個位置

elementtype retrieve(position p); //獲取位置p處的元素值

#endif // _list_h

宣告完了以後,我們就要逐步實現這些單鏈表的adt,實現的**放在list.c中

具體實現**如下:

/**

* @file list.h

* @brief 鍊錶的實現部分

* @details

* @author [email protected]

* @date 2014-5-19

*/#include #include #include //別忘了先把宣告部分的標頭檔案list.h包含進來

//實現節點結構體

struct node

;//空鍊錶返回true

int isempty(list l)

//當前位置是否為鍊錶末尾

int islast(position p, list l)

//找到乙個元素所在的位置

position find(elementtype x, list l)

//找到某個元素的前驅

position findprevious(elementtype x, list l)

//刪除某個元素x

void delete(elementtype x, list l)

}//列印錯誤資訊

void fatalerror(char *str)

//在某個元素前插入乙個元素

void insert(elementtype x, list l, position p)

//刪除乙個鍊錶

void deletelist(list l)

}

至此,我們已經基本實現乙個單鏈表和其基礎的操作。這裡有幾個例程並沒有實現,不要著急,這裡的單鏈表還不能供我們使用,有幾個歷程和後面我們實現棧和佇列時大同小異,等學完棧和佇列,我們再回來把剩下的幾個例程補上,然後也像測試棧和佇列一樣,在主程式中來測試一下單鏈表。

資料結構與演算法分析 用C語言實現佇列(陣列方式)

佇列先進先出,涉及到兩個位置的操作,乙個是隊首,乙個是隊尾,我們分別用兩個整型變數來表示隊首和隊尾,另外需要注意的是我們實現佇列時要借助迴圈陣列,具體在 中已經很清楚了。實現過程中的技巧與用陣列實現棧時大多數一樣。首先,我們來宣告型別,結構和例程。file queue.h brief 用鍊錶實現佇列...

資料結構與演算法(六)查詢 c語言實現

靜態查詢表 include include include define max 20 typedef struct elemtype typedef struct stable stable initlist int n for int i 0 i n i st length n return s...

資料結構 查詢演算法 用c語言實現查詢演算法《一》)

一 查詢的分類 1 靜態查詢 不進行插入和刪除操作。2 動態查詢 可進行插入和刪除操作。按查詢的基本方法可分為 比較查詢法和計算查詢法。按元素的組織結構可分為 基於線性表的查詢和基於樹的查詢。二 順序查詢 基於線性表 1 陣列順序儲存 靜態 比較查詢 include define list size...