日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 編程 > C# > 正文

C#數(shù)據(jù)結(jié)構(gòu)與算法揭秘三 鏈表

2020-01-24 03:39:58
字體:
供稿:網(wǎng)友

上文我們討論了一種最簡單的線性結(jié)構(gòu)――順序表,這節(jié)我們要討論另一種線性結(jié)構(gòu)――鏈表。

什么是鏈表了,不要求邏輯上相鄰的數(shù)據(jù)元素在物理存儲(chǔ)位置上也相鄰存儲(chǔ)的線性結(jié)構(gòu)稱之為鏈表。舉個(gè)現(xiàn)實(shí)中的例子吧,假如一個(gè)公司召開了視頻會(huì)議的吧,能在北京總公司人看到上海分公司的人,他們就好比是邏輯上相鄰的數(shù)據(jù)元素,而物理上不相連。這樣就好比是個(gè)鏈表。 鏈表分為①單鏈表,②單向循環(huán)鏈表,③雙向鏈表,④雙向循環(huán)鏈表。

介紹各種各樣鏈表之前,我們要明白這樣一個(gè)概念。什么是結(jié)點(diǎn)。在存儲(chǔ)數(shù)據(jù)元素時(shí),除了存儲(chǔ)數(shù)據(jù)元素本身的信息外,還要存儲(chǔ)與它相鄰的數(shù)據(jù)元素的存儲(chǔ)地址信息。這兩部分信息組成該數(shù)據(jù)元素的存儲(chǔ)映像(Image),稱為結(jié)點(diǎn)(Node)。在c語言這些面向過程語言中,實(shí)現(xiàn)節(jié)點(diǎn)是通過指針的形式,在。net中,是通過模擬指針――類對象嵌套的形式。

然后,首先,介紹單鏈表。如果結(jié)點(diǎn)的引用域只存儲(chǔ)該結(jié)點(diǎn)直接后繼結(jié)點(diǎn)的存儲(chǔ)地址, 則該鏈表叫單鏈表(Singly Linked List)。把該引用域叫 next。單鏈表結(jié)點(diǎn)的結(jié)構(gòu)如圖所示,圖中 data表示結(jié)點(diǎn)的數(shù)據(jù)域。

現(xiàn)實(shí)中,就像一隊(duì)盲人過馬路。如圖所示

   

把單鏈表結(jié)點(diǎn)看作是一個(gè)類,類名為 Node<T>。單鏈表結(jié)點(diǎn)類的實(shí)現(xiàn)如下所示。 

復(fù)制代碼 代碼如下:

public class Node<T>
{
//一隊(duì)盲人過馬路 存儲(chǔ)的是盲人的姓名
private T data; //數(shù)據(jù)域 存儲(chǔ)數(shù)據(jù)的對象
//一隊(duì)盲人過馬路 指向的是下一個(gè)盲人對象。
private Node<T> next; //引用域 指向下一個(gè)對象

//構(gòu)造器
public Node(T val, Node<T> p)
{
data = val;
next = p;
}

//構(gòu)造器
public Node(Node<T> p)
{
next = p;
}

//構(gòu)造器
public Node(T val)
{
data = val;
next = null;
}

//構(gòu)造器
public Node()
{
data = default(T);
next = null;
}

//數(shù)據(jù)域?qū)傩?
public T Data
{
get
{
return data;
}
set
{
data = value;
}
}

//引用域?qū)傩?
public Node<T> Next
{
get
{
return next;
}
set
{
next = value;
}
}
}


下圖是線性表(a1,a2,a3,a4,a5,a6)對應(yīng)的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)示意圖。

單鏈表類 LinkList<T>源代碼的實(shí)現(xiàn)說明如下所示。首先申明一下,他繼承與IListDS這個(gè)接口。

//這是一個(gè)盲人過馬路的類的模擬

public class LinkList<T> : IListDS<T> { 

//排在第一個(gè)位置的盲人

private Node<T> head; //單鏈表的頭引用

//頭引用屬性
public Node<T> Head
{
get
{
return head;
}

set
{
head = value;
}
}

//構(gòu)造器

//開始的時(shí)候一個(gè)盲人都沒有,頭結(jié)點(diǎn)指向?yàn)榭盏奈恢谩]有排頭的盲人
public LinkList()
{
head = null;
}

 

//這里我們求盲人隊(duì)伍的長度,從第一個(gè)盲人數(shù)起,然后第二個(gè),第三個(gè)。就以此類推。。。這樣子盲人的隊(duì)伍的長度就得出來了啊。

//求單鏈表的長度
public int GetLength()
{
Node<T> p = head;

int len = 0;
while (p != null)
{
++len;
p = p.Next;
}
return len;
}

 

//不讓盲人排隊(duì),就是讓這個(gè)隊(duì)的頭都不存在

//清空單鏈表
public void Clear()
{
head = null;
}

 

//判斷一個(gè)盲人隊(duì)列的是不是為空,看他的頭部是不是有人

//判斷單鏈表是否為空
public bool IsEmpty()
{
if (head == null) 
{
return true;
}
else
{
return false;
}
}

//在單鏈表的末尾添加新元素
public void Append(T item)
{
Node<T> q = new Node<T>(item);
Node<T> p = new Node<T>();
//這里如果沒有盲人排隊(duì)的話,就在隊(duì)列的頭部進(jìn)行了 


if (head == null)
{
head = q;
return;
}
//不懂的,一切盡在圖例中

//如果有人排隊(duì),就從頭遍歷,讓他從沒人的地方加入到隊(duì)伍中去并且把這個(gè)隊(duì)列的指針 指向后面。
p = head;
while (p.Next != null)
{
p = p.Next;
}

p.Next = q;

不懂的一切盡在圖例中

這個(gè)方法的算法復(fù)雜度是O(n)
}

//就是在一隊(duì)中增加了插隊(duì)的人員

//在單鏈表的第i個(gè)結(jié)點(diǎn)的位置前插入一個(gè)值為item的結(jié)點(diǎn)
public void Insert(T item, int i)
{
if (IsEmpty() | | i < 1)
{
Console.WriteLine("List is empty or Position is error!");
return;
}
//是頭結(jié)點(diǎn)的位置,就把他的頭執(zhí)政指向與他,把另外指針與他  

if (i == 1)
{
Node<T> q = new Node<T>(item);
q.Next = head;
head = q;
return;
}
//不懂的,如圖所示:

//而這個(gè)是將其循環(huán)到隊(duì)列相應(yīng)的位置,在將從頭其插入到這個(gè)位置

Node<T> p = head;
Node<T> r = new Node<T>();
int j = 1;

while (p.Next != null&& j < i)
{
r = p;
p = p.Next;
++j;
}

if (j == i)
{
Node<T> q = new Node<T>(item);
q.Next = p;
r.Next = q;
}

一切盡在圖例中

}

 這個(gè)方法的算法復(fù)雜度O(n)

 

//刪除單鏈表的第i個(gè)結(jié)點(diǎn)
public T Delete(int i)
{

//是不是盲人排隊(duì)的 或者排隊(duì)的位置不是正確的   這就返回了一個(gè)錯(cuò)誤信息
if (IsEmpty()|| i < 0)
{
Console.WriteLine("Link is empty or Position is
error!");
return default(T);
}
//是頭結(jié)點(diǎn)的 的就返回  第二個(gè)節(jié)點(diǎn)頂?shù)降谝粋€(gè)節(jié)點(diǎn)的位置

Node<T> q = new Node<T>();

if (i == 1)
{
q = head;
head = head.Next;
return q.Data;
}
此步驟為O(1)  

 

//不是的頭位置的吧,就尋找相應(yīng)位置的節(jié)點(diǎn),在進(jìn)行刪除。他這個(gè)排隊(duì)前面的人指向后面的人。這就是新的隊(duì)伍了  沒找到,就返回錯(cuò)誤。
Node<T> p = head;
int j = 1;

while (p.Next != null&& j < i)
{
++j;
q = p;
p = p.Next;
}

if (j == i)
{
q.Next = p.Next;
return p.Data;
}
else
{
Console.WriteLine("The ith node is not exist!");
return default(T);
}

不懂的如圖所示:

此方法的運(yùn)行時(shí)間復(fù)雜度是O(n)
}

//獲得單鏈表的第i個(gè)數(shù)據(jù)元素

//知道隊(duì)伍 我要查詢出隊(duì)伍中第n個(gè)人是那位,
public T GetElem(int i)
{

//如果是空的就返回為錯(cuò)誤的結(jié)果
if (IsEmpty())
{
Console.WriteLine("List is empty!");
return default(T);
}

//從圖接點(diǎn)數(shù)  第n個(gè)的結(jié)果了
Node<T> p = new Node<T>();
p = head;
int j = 1;

while (p.Next != null&& j < i)
{

++j;
p = p.Next;
}
//有著 則返回  沒有就返回錯(cuò)誤

if (j == i)
{
return p.Data;
}
else
{
Console.WriteLine("The ith node is not exist!");
return default(T);
}
}

不懂的,一切盡在圖例中。

此方法的時(shí)間的復(fù)雜度是O(n)

//我要查詢張山的位于隊(duì)伍的第幾個(gè)位置

//在單鏈表中查找值為value的結(jié)點(diǎn)
public int Locate(T value)
{

//空返回為假的的  
if(IsEmpty())
{
Console.WriteLine("List is Empty!");
return -1;
}

Node<T> p = new Node<T>();
p = head;
int i = 1;

//從頭遍歷 比較器 相等的   返回為相應(yīng)的索引

while (!p.Data.Equals(value)&& p.Next != null)
{
P = p.Next;
++i; 
}
不懂的,如圖所示:


return i;

這個(gè)算法復(fù)雜度是O(n2)
}

}

這節(jié)我們討論鏈表的基本操作,并且畫圖以證明,下屆中我們將討論雙向鏈表,環(huán)形鏈表 應(yīng)用舉例。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
中文字幕在线观看国产| www中文字幕| 欧美日韩精品国产| 欧美va亚洲va日韩∨a综合色| 日韩免费久久| 一级免费a一片| 亚洲成人7777| 国产无遮挡在线视频免费观看| 日韩在线高清视频| 在线观看国产一区| 日韩黄色在线播放| 亚洲一区日韩精品中文字幕| 精品视频999| 中文字幕久久精品| 国产欧美日韩不卡免费| 免费视频最近日韩| 中文字幕在线视频久| 黄色国产网站在线播放| 国产黄色小视频| 亚洲黄色www| 欧美日韩第一区日日骚| 久久精品黄色片| 亚洲成av人片一区二区密柚| 日韩欧美一二三| 国产亚洲视频中文字幕视频| 亚洲第一福利视频在线| 日韩精品视频在线观看免费| 视频一区二区不卡| 日韩三区免费| 日韩国产在线观看一区| 日韩欧美中文在线| 国产字幕在线看| 日韩精品中文字幕第1页| 日韩av一区二区在线| 91精品啪在线观看国产60岁| 日韩中文字幕在线观看视频| 亚洲福利精品视频| 高清在线一区| 亚洲国产综合久久| 亚洲视频电影在线| 欧美三级在线看| 刘玥91精选国产在线观看| 亚洲国产欧美日韩在线| 国产成人一区二区精品非洲| 中文字幕成人乱码在线电影| 在线一区二区三区精品| 亚洲乱码中文字幕| 天堂在线中文资源| 国产高清一区| 91精品国产欧美日韩| 不卡av免费在线| 日韩欧美在线视频| 亚洲日产av中文字幕| 久久精品国产视频| 国产乱一区二区| 日韩精品国产欧美| 91精品国产自产| 欧美日韩国产综合视频在线观看| 在线视频三区| 99久久精品国产成人一区二区| 中文精品视频| 国产黄色一级片| 91精品久久久久| 欧美自拍一区| 国产综合成人久久大片91| 中文字幕日韩在线观看| 亚洲最大黄色| 欧美xxxx中国| 午夜黄色小视频| 亚洲欧洲三级| 欧美亚洲免费高清在线观看| 成人xxxx| 香蕉精品久久| 一级一片免费视频| 中文字幕2020第一页| 最近高清中文在线字幕在线观看1 中文字幕在线视频久 | 青青久在线视频免费观看| 日韩在线高清视频| 精人妻一区二区三区| 日韩在线观看视频一区二区| 999精品色在线播放| 国产嫩草影院久久久久| 亚洲中文字幕在线一区| av中文在线资源| 日韩专区视频网站| 91精品国产自产91精品| 日韩免费久久| 一区二区在线高清视频| 免费国产h视频在线观看86| 中文字幕中文字幕精品| 一区二区不卡在线| 亚洲福利精品| a级在线免费观看| 91精品国产自产在线丝袜啪| 国产成人精品综合久久久| 中文精品在线观看| 久久福利视频一区二区| 人妻一区二区三区免费| 日韩欧美久久久| 国产欧美日韩在线看| 日韩一级免费视频| 中文字幕日韩高清| 日韩久久精品网| 国产高潮久久久| 国产拍揄自揄精品视频麻豆| 国产wwww| 国产欧美日韩综合精品| 日韩欧美中文在线| 婷婷中文字幕一区三区| 国产一级片播放| 国产视频2区| 色综合久久六月婷婷中文字幕| 欧美 日韩 国产 在线| 亚洲一区在线观看网站| 日韩欧美中文在线视频| 自拍日韩亚洲一区在线| 久久久99久久精品欧美| 精品欧美日韩精品| 91xxx在线观看| 日韩av在线中文字幕| 日韩国产亚洲欧美| 精品欧美日韩在线| 国产不卡视频在线| 久久久精品日韩欧美| 日韩精品在线免费播放| 欧美日韩在线不卡| 欧美xxxx中国| 欧美日韩国产亚洲一区| 在线视频色在线| 亚洲 欧美综合在线网络| 日韩精品视频在线免费观看| 日韩高清不卡一区二区| 亚洲一级在线| 亚洲大胆人体av| 国产欧美日韩在线视频| 一区二区三区中文字幕在线观看| 国产一二三精品| 国产在线高清精品| 亚洲国产欧美91| 91精品日本| 91久久久精品| 中文字幕高清在线播放| 快she精品国产999| 亚洲a一级视频| 亚洲欧洲日韩在线| 亚洲第一香蕉网| 欧美精品一区二区三区在线播放| 日韩精品在线网站| 日韩av综合在线观看| 国产第一页在线播放| 日本a级黄色| 日韩精品视频在线观看网址| 国产欧美日韩中文字幕| av三级在线播放| 欧美日韩性视频在线| 亚洲欧美中文字幕在线观看| 日韩精品视频免费看| 国产欧美久久久| 国产不卡在线观看视频| 国产羞羞视频在线播放| 中文字幕欧美在线| 1区2区在线| 一区二区视频国产| 国产亚洲短视频| 日韩一级网站| 日本精品在线中文字幕| 五月天久久比比资源色| 国产一二三区精品视频| 欧美日韩中文字幕视频| 精品在线一区二区三区| 亚洲福利精品视频| 欧洲精品二区| 91精品国产经典在线观看| 一区在线视频观看| 午夜国产在线| 日韩一级在线视频| 免费高清在线一区| 先锋男人资源站| 亚洲高清中文字幕| 欧美日韩国产在线| 欧美日韩精品在线| 久久久水蜜桃| 亚洲 欧美 日韩系列| 91精品国产综合久久蜜臀 | 视频一区二区精品的福利| 亚洲v中文字幕| 久久精品一二三| 一区二区三区四区五区视频在线观看| 麻豆一区二区99久久久久| 国产高清精品二区| 国产一区久久久| 欧美日韩精品在线观看| 在线观看国产一区| 午夜伦欧美伦电影理论片| 亚洲第一精品在线| 日韩欧美亚洲国产| 精品国产乱码久久久久久牛牛| 亚洲黄色www| 精品激情国产视频| 天堂精品高清1区2区3区| 日韩欧美专区在线| 亚洲欧洲日韩在线| 日韩中文字幕在线观看视频| 日韩精品免费观看视频| 欧美日韩中文字幕在线视频| 国产一区免费视频| 欧美.日韩.国产.一区.二区| 国产激情久久久| 最近中文字幕第一页| 日韩欧美中文字幕精品| 99精品一级欧美片免费播放| 亚洲综合在线电影| 不卡视频一区二区三区| 日韩久久99| 日韩欧美国产成人精品免费| 中文字幕亚洲一区在线观看| 国产一区免费视频| 国产黄色片中文字幕| 欧美日韩精品综合| 视频一区二区国产| 福利在线国产| 日韩一级免费在线观看| 久久久99久久| 在线视频一区二区三区在线播放| 国产成人精品网址| 九色蝌蚪视频在线| 亚洲狠狠婷婷综合久久久久图片| 中文欧美字幕免费| 中文字幕日韩在线视频| 国产日韩精品在线看| 久久久综合av| 一区二区不卡在线| 国产在线精品日韩| 视频一区不卡| 91精品国产色综合久久不卡蜜臀 | 顶级网黄在线播放| 欧美日韩精品是欧美日韩精品| 中文精品在线| av免费不卡国产观看| 在线视频观看日韩| 日韩国产专区| 日韩精品在线私人| 中文字幕视频一区二区三区久| 视频一区日韩| 亚洲女人天堂色在线7777| 国产在线导航| 国产一区精品| 日韩国产在线不卡视频| 日韩精品中文在线观看| 91精品国产入口| 欧美日韩999| 国产91久久久久蜜臀青青天草二 | 中文字幕在线视频日韩| 在线国产三级| 国产视频一区三区| 国内精品不卡| 午夜一区二区视频| 999精品网| 亚洲国产专区| 国产一区高清视频| 激情国产在线| 一区视频在线播放| 亚洲综合欧美在线| 日韩视频1区| 精品网站999www| 欧美日韩综合在线免费观看| 国产资源中文字幕| 国产激情在线| 欧美日韩视频免费看| 91精品在线观看国产| 精品久久久视频| 欧美日本精品在线| 亚洲а∨精品天堂在线| 91精品免费看| 中文字幕亚洲欧美| 国产免费永久在线观看| 国产午夜精品视频| 天天综合天天添夜夜添狠狠添| 精品午夜av| 国产一级在线播放| 一区二区欧美国产| 日韩视频一区在线观看| 国产精品福利视频一区二区三区| 日韩欧美在线视频日韩欧美在线视频| 国产美女主播视频一区| 国产色在线视频| 欧美另类久久久品| 蜜桃精品视频| 婷婷精品视频| 国产成人精品综合久久久| 欧美一级在线观看| 日韩欧美亚洲国产| 欧美日韩在线精品成人综合网 | 亚洲一区激情| 蜜桃视频一日韩欧美专区| 久久精品国产2020观看福利| 亚洲一区在线观看免费| 欧美不卡123| 人妻一区二区三区免费| 国产不卡在线观看视频| 国产欧美第一页| 99精品视频99| 国产在成人精品线拍偷自揄拍| 国产嫩草影院久久久久| 日韩www在线| 中文字幕亚洲国产| 国产亚洲欧美中文| 91精品国产手机| 欧美成人vr18sexvr| 91精品视频观看| 天堂精品高清1区2区3区| 欧美日韩三级在线观看| 日韩欧美国产成人一区二区| 久久久91精品国产| 欧美日韩精品不卡| 51精品免费网站| 亚洲欧美999| 国内精品99| 国产三级做爰在线观看| 精品久久久91| 日韩在线视频在线观看| 日韩欧美色综合| 国产在线看一区| 国产欧美日韩在线视频| 日韩精品视频在线观看免费| 久久99精品久久久久子伦| 一区二区三区四区五区视频在线观看| 91精品国产自产91精品| 日韩欧美在线精品| 欧美 日韩 国产 在线观看| 日韩字幕在线观看| 日韩av不卡在线观看| 午夜少妇久久久久久久久| 日韩欧美亚洲区| 在线黄色国产电影| 国产日韩亚洲欧美| 中文字幕高清在线播放| 日韩一二三四区| 日韩视频一区| 欧美日韩在线中文字幕| 久久久精品福利| 日韩精品欧美| 午夜伊人狠狠久久| 一区精品在线播放| 日韩一级二级三级| 一本一道综合狠狠老| 亚洲中文字幕在线一区| 欧美1区免费| 中文字幕亚洲乱码| 91精品在线观看入口| 91精品视频观看| 国产日韩精品电影| 成人h视频在线观看| 91精品国产综合久久蜜臀| 日韩色在线观看| 日本免费看黄| 精品欧美日韩精品| 三级网站免费观看| 欧美黄页在线免费观看| 欧美日韩三级在线| 亚洲福利精品| 中文字幕精品www乱入免费视频| 一区二区精品免费| 综合激情国产一区| 亚洲中文字幕一区| 最近中文av字幕在线中文| 国产小视频在线观看免费| 日本亚洲欧美| 国产日韩精品电影| 日韩在线视频在线观看| 国产欧美久久久久久久久| 欧美婷婷久久| 日韩一级视频在线观看| 欧美日韩国产不卡| 精品一二三四区| 91精品国产手机| 欧美日韩亚洲国内综合网| 亚洲欧美中文字幕| 国产中文在线视频| 欧美三级在线看| 日韩一级网站| 国产欧美日韩精品综合| 国产日韩在线视频| 亚洲九九精品| 亚洲欧美久久久| 97国产视频| aaa免费看大片| 久草视频观看| 日本亚洲欧美天堂免费| 久久视频免费看| 日韩精品视频在线| 日韩欧美国产不卡| 欧美日韩综合色| 日韩免费电影网站| 亚洲女人天堂色在线7777| 久久人人精品| 精品久久91| 中文字幕日韩视频| 中文在线不卡视频| 久久99久久久欧美国产|