一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Sql Server - 數據結構簡明備忘錄 線性表

數據結構簡明備忘錄 線性表

2019-11-21 14:48LevinLee Sql Server

線性表是線性結構的抽象,線性結構的特點是結構中的數據元素之間存在一對一的線性關系。

線性表 

線性表是線性結構的抽象,線性結構的特點是結構中的數據元素之間存在一對一的線性關系。 
數據元素之間的位置關系是一個接一個的排列: 
.除第一個位置的數據元素外,其他數據元素位置的前面都只有一個數據元素。 
.除最后一個位置的外,其他數據元素位置的后面都只有一個元素。 
線性表通常表示為:L=(D,R) 
D是數據元素的有限集合 
R是數據元素之間關系的有限集合 

線性表的基本操作: 

復制代碼代碼如下:


public interface IListDS<T> { 
int GetLength(); //求長度 
void Clear(); //清空 
bool IsEmpty(); //判空 
void Append(T item); //附加 
void Insert(T item, int i); //插入 
T Delete(int i); //刪除 
T GetElement(int i); //取表元素 
int Locate(T value); //按值查找 


順序表 

順序表是線性表的順序存儲(Sequence Storage),是指在內存中用一塊地址連續的空間依次存放線性表的數據元素(Sequence List),具有隨機存取的特點。 

w: 每個數據元素占w個存儲單元 
A1:順序表的基地址(Base Address) 
Loc(Ai)=Loc(A1)+(i-1)*w 1<=i<=n 

為了理解順序表,閃電學習了這樣一個例題,有興趣的朋友可以在自己的機器上寫一下。 
有數據類型為整型的順序表La和Lb,其數據元素均按從小到大的升序排列,編寫一個算法將它們合并成一個表Lc,要求Lc中數據元素也按升序排列。 
算法思路: 
依次掃描La和Lb的數據元素,比較La和Lb當前數據元素的值,將較小值的數據元素賦給Lc,如此直到一個順序表被掃描完,然后將未完的那個順序表中余下的數據元素賦給Lc即可。Lc的容量要能夠容納La和Lb兩個表相加的長度。 
思路圖示: 
數據結構簡明備忘錄 線性表

復制代碼代碼如下:


public class SeqList<T> : IListDS<T> { 
private int maxsize; //順序表的容量 
private T[] data; //數組,用于存儲順序表中的數據元素 
private int last; //指示順序表最后一個元素的位置 

//構造器 
public SeqList(int size) 

data = new T[size]; 
maxsize = size; 
last = -1; //如果順序表為空,last=-1 

//索引器 
public T this[int index] 

get { return data[index]; } 
set { data[index] = value; } 

//最后一個元素的位置屬性 
public int Last 

get { return last; } 

//容量屬性 
public int Maxsize 

get { return maxsize; } 
set { maxsize = value; } 

//判斷順序表是否為空 
public bool IsEmpty() 

if (last == -1) 
return true; 
else 
return false; 

//判斷順序表是否為滿 
public bool IsFull() 

if (last == maxsize - 1) 
return true; 
else 
return false; 

//求順序表的長度 
public int GetLength() 

return last + 1; 

//清空順序表 
public void Clear() 

last = -1; 

//在順序表末尾添加新元素 
public void Append(T item) 

if (IsFull()) 

Console.WriteLine("List is full."); 
return; 

data[++last] = item; 


//在順序表第i個數據元素位置插入一個數據元素 
public void Insert(T item, int i) 

if (IsFull()) 
return; 
if (i < 1 || i > last + 2) 
return; 
if (i == last + 2) 
data[last + 1] = item; 
else 

for (int j = last; j >= i - 1; --j) 

data[j + 1] = data[j]; 

data[i - 1] = item; 

++last; 

//刪除順序表的第i個數據元素 
public T Delete(int i) 

T tmp = default(T); 
if (IsEmpty()) 
return tmp; 
if (i < 1 || i > last + 1) 
return tmp; 
if (i == last + 1) 
tmp = data[last--]; 
else 

tmp = data[i - 1]; 
for (int j = i; j <= last; ++j) 
data[j] = data[j + 1]; 

--last; 
return tmp; 

//獲得順序表的第i個數據元素 
public T GetElement(int i) 

if (IsEmpty() || (i < 1) || (i > last + 1)) 
return default(T); 
return data[i-1]; 

//在順序表中查找值為value的數據元素 
public int Locate(T value) 

if (IsEmpty()) 
return -1; 
int i = 0; 
for (i = 0; i <= last; ++i) 

if (value.Equals(data[i])) 
break; 

if (i > last) 
return -1; 
return i; 

}

 

復制代碼代碼如下:


public class GenericList 

public GenericList() 
{ } 
public SeqList<int> Merge(SeqList<int> La, SeqList<int> Lb) 

SeqList<int> Lc = new SeqList<int>(La.Maxsize+Lb.Maxsize); 
int i = 0; 
int j = 0; 
int k = 0; 
//兩個表中元素都不為空 
while ((i <= (La.GetLength() - 1)) && (j <= (Lb.GetLength() - 1))) 

if (La[i] < Lb[j]) 
Lc.Append(La[i++]); 
else 
Lc.Append(Lb[j++]); 

//a表中還有數據元素 
while (i <= (La.GetLength() - 1)) 
Lc.Append(La[i++]); 
//b表中還有數據元素 
while (j <= (Lb.GetLength() - 1)) 
Lc.Append(Lb[j++]); 
return Lc; 


客戶端代碼: 

復制代碼代碼如下:


static void Main(string[] args) 

SeqList<int> sl1 = new SeqList<int>(4); 
sl1.Append(1); 
sl1.Append(3); 
sl1.Append(4); 
sl1.Append(7); 
SeqList<int> sl2 = new SeqList<int>(6); 
sl2.Append(2); 
sl2.Append(5); 
sl2.Append(6); 
sl2.Append(8); 
sl2.Append(11); 
sl2.Append(14); 
GenericList gl = new GenericList(); 
SeqList<int> sl3 = gl.Merge(sl1, sl2); 
Console.WriteLine("length:" + sl3.GetLength()); 
for (int i = 0; i < sl3.GetLength(); i++) 

Console.WriteLine(i + ":" + sl3[i]); 


好了,下一次學習鏈表。 
作者:LevinLee

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本mv精品中文字幕 | 亚洲国产麻豆 | 无人在线视频高清免费播放 | 国产欧美一区二区精品久久久 | 成全视频在线观看免费 | 欧美日韩1区2区 | 亚洲国产五月综合网 | 8mav福利视频 | 消息称老熟妇乱视频一区二区 | 91色视| 国产区香蕉精品系列在线观看不卡 | 精品一区视频 | 欧美特黄特色aaa大片免费看 | 国产福利在线观看第二区 | 国产东北3p真实在线456视频 | 日本大乳护士的引诱图片 | 手机在线观看网站免费视频 | 啪啪模拟器 | 久久亚洲精品专区蓝色区 | 贰佰麻豆剧果冻传媒一二三区 | 能免费观看的韩剧 | 四虎tv在线观看884aa | 无人影院免费观看 | 日韩在线一区二区三区免费视频 | 国产原创精品 | 污污的动态图合集 | 翁公与小莹在客厅激情 | 美女任你模 | 青柠在线完整高清观看免费 | 80s在线| 99re在线视频免费观看 | 水野朝阳厨房系列在线观看 | 奇米影视中文字幕 | 国产精品久久久久久福利 | 国产一卡2卡3卡四卡精品网站 | japanese超丰满人妖 | boobsmilking流奶水| 欧美日本一本线在线观看 | 欧美日韩国产一区二区三区在线观看 | 爸爸的宝贝小说全文在线阅读 | 四虎comwww最新地址 |