順序表就是按照順序儲存方式儲存的線性表,該線性表的結點按照邏輯次序一次存放在計算機的一組連續的儲存單元中如下圖:
由於順序表是一次存放的,只要知道了該順序表的首位址以及每個資料元素所占用的儲存長度,那麼我們就很容易計算出任何乙個資料元素(也就是資料繫結點)的位置。
1、結點資料型別:
public
class myseqnode
}
2、順序表的類:
/**
* 順序表的實現
*@author administrator
* */
public
class
mysequence
3、初始化順序表
建立乙個空的順序表,也就是初始化順序表,只需要將表的結點數量listlen設為0即可,這樣如果順序表中原來已有資料,後面新增的資料元素將從順序表的第乙個位置儲存,也會覆蓋已有資料。
/**
* 初始化順序表,即建立空的順序表
*/public
void
initmysequence(mysequence mysequence)
4、計算順序表長度
計算順序表長度也就是計算順序表中結點的個數。
/**
* 獲取數序表長度,即已存節點的數量
*@return
*/public
intgetmyseqlen(mysequence mysequence)
5、插入結點是在順序表的第i個位置上插入乙個新的結點,使得其後的結點編號依次加1。這時候順序表的長度便為n+1。插入的結點之後的結點都要向後移動。
/**
* 插入結點,成功返回1,否則返回0
* @param myseqnode 要插入的結點
* @param n 要插入的結點的位置
* @return
*/ public int insertseq(mysequence mysequence,myseqnode myseqnode,int n)
if(n<1||n>seqlen-1)
for(int i=seqlen;i>=n;i--)
mysequence.myseq[n]=myseqnode; //插入結點
mysequence.seqlen++; //順序表結點個數增加1,即長度+1
return
1; }
6、追加節點
在順序表的末尾來新增加乙個加乙個節點。不需要大量資料移動,只需要結點個數即長度+1.
/**
* 追加結點
*@param myseqnode 要追加的結點
*@return
*/public
int if (seqlen>=maxlen)
mysequence.myseq[++seqlen]=myseqnode;
return
1; }
7、刪除結點
刪除結點是刪除順序表l的第i個結點,使其後的所有結點編號依次減1。刪除節點,長度-1,刪除節點之後的結點都需要向前移動。
/**
* 刪除某乙個位置上的結點
*@param mysequence
*@param n
*@return
*/public
intdelseqnode(mysequence mysequence,int n)
for (int i = n; i < mysequence.seqlen; i++)
mysequence.seqlen--;
return
1; }
8、查詢結點
(1)、根據位置i查詢結點
/**
* 根據序列號返回結點
*@param mysequence
*@param n
*@return
*/public myseqnode getnodebynum(mysequence mysequence,int n)
return mysequence.myseq[n];
}
(2)、根據關鍵字查詢結點
/**
* 根據關鍵字返回結點序列號
*@param mysequence
*@param key
*@return
*/public
intgetnodebykey(mysequence mysequence,string key)
}return
0; }
9、顯示所有結點:
/**
* 遍歷所有的結點
*/public void listseq(mysequence mysequence)
}
順序表缺點:
1、在插入或者刪除結點時,需要移動大量的資料。
2、如果表比較大,有時會比較男分配足夠的連續的儲存空間,往往導致記憶體分配失敗,而無法儲存。
資料結構之順序表
首先是標頭檔案seqlist.h ifndef seqlist h define seqlist h include includeusing namespace std define elemtype int define seqlist default size 10 typedef struc...
資料結構之順序表
順序表的思想容易了解,但是 不容易掌握,我這裡根據老師所提供的 進行一下簡單的總結 這個 包含順序表的查詢,插入,刪除,建表,輸出資料 includeusing namespace std define ok 1 define error 0 define overflow 2 typedef in...
資料結構之 順序表
源 本 僅僅顯示了順序表中基本的刪除,顯示等操作。其他相關操作可以進一步擴充。接下來是實現線性表中的鍊錶結構。include include define maxline 1000 typedef struct seqlist void listinit seqlist 初始化順序表 int lis...