雙鏈式存儲結構講解
Ⅰ 雙向循環鏈表的概念
本課主題: 循環鏈表與雙腔拿向鏈表
教學目的: 掌握循環鏈表的概念,掌握雙向鏈表的的表示與實現
教學重點: 雙向鏈表的表示與實現
教學難點: 雙向鏈表的存儲表示
授課內容:
一、復習線性鏈表的存儲結構
二、循環鏈表的存儲結構
循環鏈表是加一種形式的鏈式存儲結構。它的特點是表中最後一個結點的指針域指向頭結點。
循環鏈表的操作和線性鏈表基本一致,差別僅在於演算法中的循環條件不是p或p->next是否為空,而是它們是否等於頭指針。
三、雙向鏈表的存儲結構
提問:單向鏈表的缺點是什麼?
提示:如何尋找結點的直接前趨。
雙向鏈表可以拍圓慧克服單鏈表的單向性的缺點。
在雙向鏈表的結點中有兩個指針域,其一指向直接襲答後繼,另一指向直接前趨。
1、線性表的雙向鏈表存儲結構
typedef struct DulNode{
struct DulNode *prior;
ElemType data;
struct DulNode *next;
}DulNode,*DuLinkList;
對指向雙向鏈表任一結點的指針d,有下面的關系:
d->next->priou=d->priou->next=d
即:當前結點後繼的前趨是自身,當前結點前趨的後繼也是自身。
2、雙向鏈表的刪除操作
Status ListDelete_DuL(DuLinkList &L,int i,ElemType &e){
if(!(p=GetElemP_DuL(L,i)))
return ERROR;
e=p->data;
p->prior->next=p->next;
p->next->prior=p->pror;
free(p);
return OK;
}//ListDelete_DuL
3、雙向鏈表的插入操作
Status ListInsert_DuL(DuLinkList &L,int i,ElemType &e){
if(!(p=GetElemP_DuL(L,i)))
return ERROR;
if(!(s=(DuLinkList)malloc(sizeof(DuLNode)))) return ERROR;
s->data=e;
s->prior=p->prior;
p->prior->next=s;
s->next=p;
p->prior=s;
return OK;
}//ListInsert_DuL
Ⅱ 簡述區塊鏈的定義詳解
區塊鏈是一種獨特的共識記錄,分布在多個網路節點上,用於安全、可靠地存儲和驗證信息。
一、區塊鏈的基本定義
區塊鏈本質上是一個不斷增長的記錄列表,由一系列按照時間順序排列的數據塊組成,並採用密碼學方式保證的不可篡改和不可偽造。每個數據塊包含了一些有效的記錄或交易,以及與前一個數據塊的鏈接(即散列值)。這種設計使得數據一旦寫入,就無法被更改或刪除,從而保證了數據的完整性和安全性。
二、區塊鏈的工作原理
- 數據存儲:每個區塊存儲有效的記錄或交易,以及涉及該塊的信息。
- 鏈式結構:通過每個區塊的散列值鏈接到前一個區塊和下一個區塊,形成鏈式結構。
- 驗證與添加:新記錄首先由網路節點驗證,然後添加到鏈接到鏈的新塊中。
三、區塊鏈的安全性
- 分布式存儲:每個網路節點都存儲鏈的精確副本,保證了信息的可用性。
- 難以篡改:由於每條記錄都是雙方同意的,並且所有節點都包含相同的信息,因此幾乎不可能改變它。攻擊者需要修改至少51%的節點中的整個鏈,這在現實中幾乎不可能實現。
- 數學鏈接:每個塊在數學上鏈接到下一個塊,一旦將新塊添加到鏈中,它就會呈現為不可更改。
四、區塊鏈的應用
- 金融領域:區塊鏈技術最初與比特幣等加密貨幣相關,但其在金融領域的應用遠不止於此。例如,它可以用於創建智能合約,自動執行合同條款,降低交易成本和風險。
- 物聯網:在物聯網市場中,區塊鏈可以使設備直接、安全、可靠地通過網路進行通信,而無需中間人,從而解決集中式模型無法支持大量設備以及設備安全性不足的問題。
- 醫療保健:區塊鏈可以用於存儲患者的健康記錄,確保病史的安全性和可用性。同時,它還可以幫助制葯行業驗證葯品並防止偽造。
- 文檔管理:區塊鏈允許記錄購買、契約、文檔或任何其他類型的在線資產,而不會被偽造,從而解決數字化帶來的復制問題。
五、區塊鏈的未來展望
隨著技術的不斷發展,區塊鏈的應用領域將會越來越廣泛。目前,已經有許多大公司開始投資並開發基於區塊鏈的解決方案。可以預見的是,區塊鏈將會成為未來互聯網的重要組成部分,為人們的生活和工作帶來更多的便利和安全。