(1)雙鏈表。下面是c++版本的實現。
#include "stdafx.h"
#include //結構體
typedef struct nodedlink;
//初始化
void dlist(dlink *&dl)
//求長度
int dlength(dlink *dl)
return i;
}//查詢
dlink *dsearch(dlink *dl,int x)
//插入
int dinsert(dlink *dl,int x,int i)
s->next=p->next; // a)
s->prior=p; // b)
if(p->next!=null)
p->next->prior=s; // c)
p->next=s; // d)
return 1;
}//刪除
int ddelete(dlink *dl,int i)
q=p->next;
p->next=q->next; // e)
if(q->next!=null)
q->next->prior=p; // f)
free(q);
return 1;
}int _tmain(int argc, _tchar* argv)
其中插入和刪除演算法可以參照下圖
其他的像單鏈表是雙鏈表的低階版本,只需要在上圖中省去一些步驟就行。而迴圈雙鏈表的結構類似,不在重複。
(2)棧。
這個比較簡單,一般用的是陣列,也有用單鏈表的。
(3)佇列。下面是環形佇列的c++實現
//結構
const int queuesize=20; //佇列的容量
typedef struct sqqueue
sqqueue;
//初始化
void initqueue(sqqueue &qu)
//入隊
int enqueue(sqqueue &sq,elemtype x)
//出隊
int dequeue(sqqueue &sq,elemtype &x)
//取隊頭元素
int gethead(sqqueue &sq,elemtype &x)
環形佇列元素個數用公式(rear+queuesize-front)%queuesize求得。
順序佇列一般很少用,因為浪費空間,當然有時候還是可以用的,因為操作簡單。
佇列還有鏈式的儲存結構。
(4)總結:在用上面結構的時候,最好的方法還是畫圖。
資料結構基礎
資料結構定義 定義 一 資料元素集合 也可稱資料物件 中各元素的關係。定義 二 相互之間存在特定關係的資料元素集合。資料結構的種類 1 集合 2 線性結構 3 樹形結構 4 圖狀結構 或網狀結構 資料結構的形式定義 資料結構名稱 d,s 其中d為資料元素的有限集,s是d上關係的有限集 邏輯結構 資料...
資料結構基礎
邏輯結構 描述資料元素之間的邏輯關係。物理結構 資料結構在計算機中的表示 映像 又稱儲存結構。它包含資料元素的表示和關係的表示。用乙個可以由若干位組合形成的乙個位串表示乙個資料元素,稱這個位串為元素或節點。當資料元素由若干資料項組成時,位串中對應於各個資料項的子位串稱為資料域。資料元素之間的關係在計...
資料結構基礎
用程式解決問題時,往往需要將具體問題抽象為數學模型,再用具體演算法進行解決,這個抽象數學模型的過程即位分析問題的過程。程式描述數學模型不再是數學方程式,而是採用資料結構。一 資料結構的基本相關概念 什麼是資料結構?資料結構是基本元素,及其之間存在的一種或多種特定關係的集合。根據不同的資料關係,可以採...