版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
第2章線(xiàn)性表及其順序存儲(chǔ)
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
第2章線(xiàn)性表及其順序存儲(chǔ)
線(xiàn)性表是一種常用的數(shù)據(jù)結(jié)構(gòu),本章介紹線(xiàn)性表
及其順序存儲(chǔ),并對(duì)棧和隊(duì)列及它們的順序?qū)崿F(xiàn)給出
了詳細(xì)的設(shè)計(jì)描述。
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
第2章線(xiàn)性表及其順序存儲(chǔ)
線(xiàn)性表是一種常用的數(shù)據(jù)結(jié)構(gòu),本章介紹線(xiàn)性表
及其順序存儲(chǔ),并對(duì)棧和隊(duì)列及它們的順序?qū)崿F(xiàn)給出
了詳細(xì)的設(shè)計(jì)描述。
2.1線(xiàn)性表
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
第2章線(xiàn)性表及其順序存儲(chǔ)
線(xiàn)性表是一種常用的數(shù)據(jù)結(jié)構(gòu),本章介紹線(xiàn)性表
及其順序存儲(chǔ),并對(duì)棧和隊(duì)列及它們的順序?qū)崿F(xiàn)給出
了詳細(xì)的設(shè)計(jì)描述。
2.1線(xiàn)爨
線(xiàn)性表是一個(gè)線(xiàn)性結(jié)構(gòu),它是一個(gè)含有n》0個(gè)
結(jié)點(diǎn)的有限序列,對(duì)于其中的結(jié)點(diǎn),有且僅有一個(gè)
開(kāi)始結(jié)點(diǎn)沒(méi)有前驅(qū)但有一個(gè)后繼結(jié)點(diǎn),有且僅有一
個(gè)終端結(jié)點(diǎn)沒(méi)有后繼但有一個(gè)前驅(qū)結(jié)點(diǎn),其它的結(jié)
點(diǎn)都有且僅有一個(gè)前驅(qū)和一個(gè)后繼結(jié)點(diǎn)。一般地,
一個(gè)莪性表可以表示成一個(gè)線(xiàn)性序列:…卜已
其中均是開(kāi)始結(jié)點(diǎn),心是終端結(jié)點(diǎn)。
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
2.21頁(yè)序表
221順序表
PEF文件使用"pdfFactoryPro"試用版本創(chuàng)建fincprint.comcn
2.21頁(yè)序表
221順序表
線(xiàn)性表采用順序存儲(chǔ)的方式存儲(chǔ)就稱(chēng)之為順序表。
順序表是將表中的結(jié)點(diǎn)依次存放在計(jì)算機(jī)內(nèi)存中一組
地址連續(xù)的年儲(chǔ)單元中。
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
2.21頁(yè)序表
2.2.力頓序表
線(xiàn)性表采用順序存儲(chǔ)的方式存儲(chǔ)就稱(chēng)之為順序表。
順序表是將表中的結(jié)點(diǎn)依次存放在計(jì)算機(jī)內(nèi)存中一組
地址連續(xù)的年儲(chǔ)單元中。
如順序表的每個(gè)結(jié)點(diǎn)占用len個(gè)內(nèi)存單元,用
location(kJ表示順序表中第i個(gè)結(jié)點(diǎn)(所占內(nèi)存空間的
第1個(gè)單元的地址。則有如下的關(guān)系
location(ki+1)=location(k)+len
location(kJ=location(k1)+(i-l)len
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
順序表的存儲(chǔ)結(jié)構(gòu)如下圖所示:
存儲(chǔ)結(jié)構(gòu)要體現(xiàn)數(shù)據(jù)的邏輯結(jié)構(gòu),順序表的存儲(chǔ)
結(jié)構(gòu)中,內(nèi)存中物理地址相鄰的結(jié)點(diǎn)一定具有順序表
中的邏輯關(guān)系。
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
順序表類(lèi)型的描述如下:
ADTsequence_list{
數(shù)據(jù)集合K:K={k]9k2,...,kn},n>0,K中的元素是datatype類(lèi)型
數(shù)據(jù)關(guān)系R:R={r},r={<ki,ki+1>|i=l,2,...,n-l}
操作集合:
(1)voidinit_sequence_list(sequence_list*slt)順序表的初始化---置空表
(2)voidinsert_sequence_list(sequence_list*slt,datatypex)后部插入值為x結(jié)點(diǎn)
(3)voidprint_sequence_list(sequence_listsit)打印順序表的各結(jié)點(diǎn)值
(4)intis_empty_sequence_list(sequence_listsit)判斷順序表是否為空
(5)intfind_num_sequence_list(sequence_listsit,datatypex)查找值為x結(jié)點(diǎn)位置
(6)intget_data_pos(sequence_listsit,inti)取得順序表中第i個(gè)結(jié)點(diǎn)的值
(7)voidinsert_pos_sequence_list(sequence_list*slt,intposition,datatypex)
(8)voiddelete_pos_sequence_list(sequence_list*slt,intposition)
}ADTsequencelist;
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
222順序表的實(shí)現(xiàn)
用C語(yǔ)言中的數(shù)組存儲(chǔ)順序表。C語(yǔ)言中數(shù)組的下標(biāo)
是從0開(kāi)始的,即數(shù)組中下標(biāo)為0的元素對(duì)應(yīng)的是順序
表中的第1個(gè)結(jié)點(diǎn),數(shù)組中下標(biāo)為i的元素對(duì)應(yīng)的是順序
表中的第i+1個(gè)結(jié)點(diǎn)。為了方便,將順序表中各結(jié)點(diǎn)的
序號(hào)改為和對(duì)應(yīng)數(shù)組元素的下標(biāo)序號(hào)一致,即將順序
表中各結(jié)點(diǎn)的序號(hào)從0開(kāi)始編號(hào)。這樣,一個(gè)長(zhǎng)度為n
的順序表可以表示為
{k。,k],k?,…,院_]}
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
順序表的存儲(chǔ)結(jié)構(gòu)的C語(yǔ)言描述如下:
?1>>2><1>
^>?*T**T**T**T*^>?*TW
/*順序表的頭文件,文件名sequlist.h*/
<l4?>|><1<?st*
/^TW^TW*T^*T^^TW
#defineMAXSIZE100
typedefintdatatype;
typedefstruct{
datatypea[MAXSIZE];
intsize;
}sequence_list;
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
順序表的幾個(gè)基本操作的具體實(shí)現(xiàn):
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
順序表的幾個(gè)基本操作的具體實(shí)現(xiàn):
K!>?1><1>K!>?x?
*Z^
順序表的初始化--置空表
/*文件名seqlinit.c,函數(shù)名init_sequence_list()
K|^^}><>!>?1>^|>^j>K|^<J>K!>^f>^|>^}>^}>^1>
*T^*T*
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
順序表的幾個(gè)基本操作的具體實(shí)現(xiàn):
K!>?1><1>K!>?x?
*Z^
順序表的初始化--置空表
/*文件名seqlinit.c,函數(shù)名init_sequence_list()*/
/v|><A??1>?X>
/*T**T*<Tw*T^
voidinit_sequence_list(sequence_list*slt)
slt->size=0;
)
算法2.1順序表的初始化一置空表
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
^j>^t>^f>^9>^f>^f>K!>?1>^j>^9^
rrw^TM*T*<TM*T^rrw<|^*r^
/*在順序表后部進(jìn)行插入操作*/
/*文件名seqlinse.c,函數(shù)名insert_sequence」ist()*/
*1^?1>?1><1^<1^<1^?1>??1^<}>^|>
<T>>TW*TW>TW*TW*TW<TW^T><TM>T*<T^rT><T>*TW<TW<T^*TW>TW*7^*TW*T>
voidinsert_sequence_list(sequence_list*slt,datatypex)
(
if(slt->size==MAXSIZE)
{printf("順序表是滿(mǎn)的!");exit(1);}
slt->size=slt->size+1;
slt->a[slt->size]=x;
)
算法2.2在順序表后部進(jìn)行插入操作
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
/^9>^1^^9^^f>^1>^9>^1^^f>?1^/
/>1^*1**1**J^<1^>1^^1**1**1^*1**TW*T**T**T*>T^*|>^W*T*/
*打印順序表的各結(jié)點(diǎn)值
/*文件名seqlprin.c,函數(shù)名print_sequence」ist()*/
//<i><i>^v>xt>/
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
/^9>^1^^9^^f>^1>^9>^1^^f>?1^/
/>1^*1**1**J^<1^>1^^1**1**1^*1**TW*T**T**T*>T^*|>^W*T*/
*打印順序表的各結(jié)點(diǎn)值
/*文件名seqlprin.c,函數(shù)名print_sequence」ist()*/
/^t>?t>^t><i><i>^v>^t>^t>^t>xt>?f>^t>^t>^t>^t>^t>^t>
//
voidprint_sequence_list(sequence_listsit)
(
inti;
if(!slt.size)printf("\n順序表是空的!”);
else
for(i=0;i<slt.size;i++)printf("%5d",slt.a[i]);
算法2.3打印順序表的各結(jié)點(diǎn)值
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
intis_empty_sequence_list(sequence_listsit)
return(slt.size==O?0:1);
)
算法2.4判斷順序表是否為空
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
^f>^1>?1^?1^^1>?1^^9>^J>^9>/
*TW*T**T^*TW*T**T**T**T**T*^T**T*^TM*TW*TW*T**T^>T^/
/*判斷順序表是否為空*/
/*文件名seqlempt.c,函數(shù)名is_empty_sequence_list()*/
/Sl^Sl^?1>^f>^|><f><A>//
intis_empty_sequence_list(sequence_listsit)
return(slt.size==O?0:1);
)
算法2.4判斷順序表是否為空
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
^f>^f>^{>KJ>*9^^f>^1>>]^^f>
^W*T**T*^W*1**T**T**TW*TW
查找順序表中值為X的結(jié)點(diǎn)位置*/
/*文件名seqlfind.c,函數(shù)名find_num_sequence_list()*/
/^f>K!>?kl><I>?I>^f><f^^f>K!>^|>?j>?f><1>^f>/
/*T^<T^/
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
^f>^f>^{>KJ>*9^^f>^1>>]^^f>
^W*T**T*^W*1**T**T**TW*TW
/*查找順序表中值為X的結(jié)點(diǎn)位置*/
/*文件名seqlfind.c,函數(shù)名find_num_sequence_list()*/
?f^^f>^|>?A?K|><I>^f>^9><f^<A?<X^*1>^I>^f>^f>?j>?f>/
/XT**T^*TM<T^/
intfind_num_sequence_list(sequence_listsit,datatypex)
(
inti=0;
while(slt.a[i]!=x&&i<slt.size)i++;
return(i<slt.size?i:-1);
}
算法2.5查找順序表中值為x的結(jié)點(diǎn)位置
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
^1^^|>^9^^9>^1>^f>^1>>1>^f>^1>^{>^1>
*TW*1**T*>1**1**1*>1^*1^*1**TW*1**TW*T**TW<J*<T**T*
取得順序表中第i個(gè)結(jié)點(diǎn)的值*
/*文件名seqlget.c,函數(shù)名get_data__pos_sequence_list()*/
//^1><1>?X?^*fT>*?X?^|>^f><1^^f>/
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
^9^^t>^9>>f^*1>^9>^9>^1>>f>^f>/
*TW*T*<T**T>*TW*T**TW*T**TW*T**T*^1**T^*T*/
/*取得順序表中第i個(gè)結(jié)點(diǎn)的值*/
/*文件名seqlget.c,函數(shù)名get_data_pos_sequence_list()*/
<1><X?^f>?X?^f>/
<T>#T^*T^<T^/
intget_data_pos(sequence_listsltjnti)
(
if(i<O||i>=slt.size)
{printf(”\n指定位置的結(jié)點(diǎn)不存在!)eWt(1);}
else
returnslt.a[i];
)
算法2.6取得順序表中第i個(gè)結(jié)點(diǎn)的值
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
順序表的插入運(yùn)算是將一個(gè)值為X的結(jié)點(diǎn)插入到順序
表的第i個(gè)位置O4i《n,即將x插入到3和I之間,如果
i=n,則表示插入到表的最后,一般地可表示為:
才由刖:{k。,,kj”kj,…,j}
插入后:{k0,k1?kg,x,kpk『i}
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
順序表的插入運(yùn)算是將一個(gè)值為X的結(jié)點(diǎn)插入到順序
表的第i個(gè)位置O4i《n,即將x插入到3和I之間,如果
i=n,則表示插入到表的最后,一般地可表示為:
才由刖:{k。,,kj”kj,…,j}
插入后:{k0,k1?kg,x,kpk『i}
插入過(guò)程的圖示見(jiàn)下圖:
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
順序表的插入運(yùn)算是將一個(gè)值為X的結(jié)點(diǎn)插入到順序
表的第i個(gè)位置O4i《n,即將x插入到3和I之間,如果
i=n,則表示插入到表的最后,一般地可表示為:
才由刖:{k。,,kj”kj,…,j}
插入后:{k0,k1?kg,x,kpk『i}
插入過(guò)程的圖示見(jiàn)下圖:
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
^f>^J>^1>^f>^9>^1>?1^>f>^t>
*TW*T**T**1^*T^*TW*T**T**T**T^*T**T**T^*TW*T*<|**T**T*
/*在順序表的position位置插入值為x的結(jié)點(diǎn)*/
/*文件名seqlinse.c,函數(shù)名insert_pos_sequence_list()*/
/<1^^jL>?1>?X??1>/
/*T^#TM/
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
voidinsert_pos_sequence_list(sequence_list*slt,int
position,datatypex)
{inti;
if(slt->size==MAXSIZE)
{printf(”\n順序表是滿(mǎn)的!沒(méi)法插入!”);exit⑴;}
if(position<0||position>slt->size)
{printf("\n指定的插入位置不存在!)exit。);}
for(i=slt->size;i>position;i-)slt->a[i]=slt->a[i-1];
slt->a[position]=x;
slt->size++;
)
算法2.7在順序表的pos由on位置插入值為x的結(jié)點(diǎn)
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
算法2.7中,所花費(fèi)的時(shí)間主要是元素后移操作,對(duì)
于在第i個(gè)位置上插入一個(gè)新的元素,需要移動(dòng)(n-i)
個(gè)元素,設(shè)在第i個(gè)位置上插入一個(gè)元素的概率為R,且
在任意一個(gè)位置上插入元素的概率相手,即
Po=Pi=P2=...=Pn=l/n+l,則在一個(gè)長(zhǎng)度為n的順序表中插
入一個(gè)元素所需的平均移動(dòng)次數(shù)為:
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
算法2.7中,所花費(fèi)的時(shí)間主要是元素后移操作,對(duì)
于在第i個(gè)位置上插入一個(gè)新的元素,需要移動(dòng)(n-i)
個(gè)元素,設(shè)在第i個(gè)位置上插入一個(gè)元素的概率為R,且
在任意一個(gè)位置上插入元素的概率相手,即
Po=Pi=P2=...=Pn=l/n+l,則在一個(gè)長(zhǎng)度為n的順序表中插
入一個(gè)元素所需的平均移動(dòng)次數(shù)為:
t小這,)=T義中檔
toto^+1〃+122
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
算法2.7中,所花費(fèi)的時(shí)間主要是元素后移操作,對(duì)
于在第i個(gè)位置上插入一個(gè)新的元素,需要移動(dòng)(n-i)
個(gè)元素,設(shè)在第i個(gè)位置上插入一個(gè)元素的概率為R,且
在任意一個(gè)位置上插入元素的概率相手,即
Po=Pi=P2=...=Pn=l/n+l,則在一個(gè)長(zhǎng)度為n的順序表中插
入一個(gè)元素所需的平均移動(dòng)次數(shù)為:
t小這,)=T義中檔
toto^+1〃+122
即在長(zhǎng)度為n的順序表中插入一個(gè)元素平均需要
移動(dòng)表中的一半元素。該算法的時(shí)間復(fù)雜度為0(n)。
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
順序表的刪除操作是指刪除順序表中的第i個(gè)結(jié)點(diǎn),
0<i<n-l5一般地可表示為:
刪除前:{ko,k“
刪除后:{k0,"…,kg,K+1,…,kn_J
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
順序表的刪除操作是指刪除順序表中的第i個(gè)結(jié)點(diǎn),
0<i<n-l5一般地可表示為:
刪除前:{ko,k“
刪除后:{k0,"…,kg,kj+1,kn_J
刪除過(guò)程的圖示見(jiàn)下圖:
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
順序表的刪除操作是指刪除順序表中的第i個(gè)結(jié)點(diǎn),
0<i<n-l5一般地可表示為:
刪除前:{ko,k“
刪除后:{k0,"…,kg,kj+1,kn_J
刪除過(guò)程的圖示見(jiàn)下圖:
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
刪除操作的具體實(shí)現(xiàn)見(jiàn)算法2.8
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
刪除操作的具體實(shí)現(xiàn)見(jiàn)算法2.8
/<1^^9>^9^^1>^}>/
/*1**1**TW*1*<1^^1**1**1**1**1^*1**1**T><Tw/
/*刪除順序表中第position位置的結(jié)點(diǎn)*/
/*文件名seqldele.c,函數(shù)名delete_pos_sequence_list()*/
/^|>^L??1><1>KI>?X><>1>/
/^TW<TM/
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
刪除操作的具體實(shí)現(xiàn)見(jiàn)算法2.8
voiddelete_pos_sequence_list(sequence_list*slt,intposition)
(
inti;
if(slt->size==O)
{printf(”\n順序表是空的!");exit⑴;}
if(position<0||position>=slt->size)
{printf(”\n指定的刪除位置不存在!");exit(1);}
for(i=position;i<slt->size-1;i-)slt->a[i]=slt->a[i+1];
slt->size-;
)
算法2.8刪除順序表中第pos田on位置的結(jié)點(diǎn)
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
要?jiǎng)h除順序表中的第i個(gè)結(jié)點(diǎn),則需要稱(chēng)動(dòng)(n-i-1)
個(gè)元素,設(shè)刪除表中第i個(gè)結(jié)點(diǎn)的概率為q〃且在表中每
一個(gè)位置刪除的概率相等,即:
q()=qi=??尸qxi/n
則在一個(gè)長(zhǎng)度為n的順序表中刪除一個(gè)結(jié)點(diǎn)的平均
移動(dòng)次數(shù)為:
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
要?jiǎng)h除順序表中的第i個(gè)結(jié)點(diǎn),則需要稱(chēng)動(dòng)(n-i-1)
個(gè)元素,設(shè)刪除表中第i個(gè)結(jié)點(diǎn)的概率為q〃且在表中每
一個(gè)位置刪除的概率相等,即:
q()=qi=??尸qxi/n
則在一個(gè)長(zhǎng)度為n的順序表中刪除一個(gè)結(jié)點(diǎn)的平均
移動(dòng)次數(shù)為:
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
要?jiǎng)h除順序表中的第i個(gè)結(jié)點(diǎn),則需要稱(chēng)動(dòng)(n-i-1)
個(gè)元素,設(shè)刪除表中第i個(gè)結(jié)點(diǎn)的概率為q〃且在表中每
一個(gè)位置刪除的概率相等,即:
q()=qi=??尸qxi/n
則在一個(gè)長(zhǎng)度為n的順序表中刪除一個(gè)結(jié)點(diǎn)的平均
移動(dòng)次數(shù)為:
=之一("-I)=—x=---
z=o2=0nn22
這表明,在一個(gè)長(zhǎng)為n的順序表中刪除一個(gè)元素平
均需要移動(dòng)表中大約一半的元素。該算法的時(shí)間復(fù)雜
度為O(n)o
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
2.3棧
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
2.3棧
231棧
PIT文件使用"pdfFactoryPro"試用版本創(chuàng)建fincprint.comcn
2.3棧
231棧
棧是一種特殊的線(xiàn)性表,對(duì)于這種線(xiàn)性表規(guī)定它
的插入運(yùn)算和刪除運(yùn)算均在線(xiàn)性表的同一端進(jìn)行,進(jìn)
行插入和刪除的那一端稱(chēng)為棧頂,另一端稱(chēng)為棧底。
棧的插入操作和刪除操作也分別簡(jiǎn)稱(chēng)進(jìn)棧和出棧。
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
2.3棧
231棧
棧是一種特殊的線(xiàn)性表,對(duì)于這種線(xiàn)性表規(guī)定它
的插入運(yùn)算和刪除運(yùn)算均在線(xiàn)性表的同一端進(jìn)行,進(jìn)
行插入和刪除的那一端稱(chēng)為棧頂,另一端稱(chēng)為棧底。
棧的插入操作和刪除操作也分別簡(jiǎn)稱(chēng)進(jìn)棧和出棧。
如果棧中有n個(gè)結(jié)點(diǎn)
{k0,,k2,.?.,kn-i},
k0為棧底,kn.1是棧頂,
則棧中結(jié)點(diǎn)的進(jìn)棧順
序?yàn)椴?,1<2,…,kn」,
而出棧的順序?yàn)閗n【
kn.2,kvk0o如囪
所示。
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
2.3棧
231棧
棧是一種特殊的線(xiàn)性表,對(duì)于這種線(xiàn)性表規(guī)定它
的插入運(yùn)算和刪除運(yùn)算均在線(xiàn)性表的同一端進(jìn)行,進(jìn)
行插入和刪除的那一端稱(chēng)為棧頂,另一端稱(chēng)為棧底。
棧的插入操作和刪除操作也分別簡(jiǎn)稱(chēng)進(jìn)棧和出棧。
如果棧中有n個(gè)結(jié)點(diǎn)
{k0,,k2,.?.,kn-i},
k0為棧底,是棧頂,
則棧中結(jié)點(diǎn)的進(jìn)棧順
序?yàn)椤?,kn」,
而出棧的順序?yàn)榛胈1,;
kn.2,kvk0o如囪
而示。!
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
2.3棧
231棧
棧是一種特殊的線(xiàn)性表,對(duì)于這種線(xiàn)性表規(guī)定它
的插入運(yùn)算和刪除運(yùn)算均在線(xiàn)性表的同一端進(jìn)行,進(jìn)
行插入和刪除的那一端稱(chēng)為棧頂,另一端稱(chēng)為棧底。
棧的插入操作和刪除操作也分別簡(jiǎn)稱(chēng)進(jìn)棧和出棧。
如果棧中有n個(gè)結(jié)點(diǎn)
{k0,,k2,.?.,kn-i},
k0為棧底,是棧頂,
則棧中結(jié)點(diǎn)的進(jìn)棧順
序?yàn)椤?,kn」,
而出棧的順序?yàn)榛胈1,;
kn.2,kvk0o如囪
而示。!
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
2.3棧
231棧
棧是一種特殊的線(xiàn)性表,對(duì)于這種線(xiàn)性表規(guī)定它
的插入運(yùn)算和刪除運(yùn)算均在線(xiàn)性表的同一端進(jìn)行,進(jìn)
行插入和刪除的那一端稱(chēng)為棧頂,另一端稱(chēng)為棧底。
棧的插入操作和刪除操作也分別簡(jiǎn)稱(chēng)進(jìn)棧和出棧。
如果棧中有個(gè)結(jié)點(diǎn)
n棧具有后
{k0,,k2,.?.,kn-i},進(jìn)先出或
為棧底,是棧頂,
k0kn.1先進(jìn)后出
則棧中結(jié)點(diǎn)的進(jìn)棧順(FILO,
序?yàn)椴?7I,卜2,…,kn」?FirstIn
而出棧的順序?yàn)樯譏LastOut)
k.,kk如囪
n2v0o:的性質(zhì)
1而示。!II____________________________.
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
棧類(lèi)型的描述如下:
ADTsequence_stack{
數(shù)據(jù)集合K:K={kpk2,...,kn},n>0,K中的元素是datatype類(lèi)型
數(shù)據(jù)關(guān)系R:R={r}
r={<ki,ki+1>|
操作集合:
(1)voidinit_sequence_stack(sequence_stack*st)(可頁(yè)序存儲(chǔ))
初始化
(2)intis_empty_stack(sequence_stackst)判斷棧(順序存儲(chǔ))
是否為空———
(3)voidprint_sequence_stack(sequence_stackst)打印棧(順
序存儲(chǔ))的意點(diǎn)、值——
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
(4)datatypeget_top(sequence_stackst)取得棧頂(順序存
貓)結(jié)點(diǎn)血
(5)voidpush(sequence_stack*st,datatypex)棧(順序存儲(chǔ))
的插入操作
(6)voidpop(sequence_stack*st)棧(順序存儲(chǔ))的刪除操
作
}ADTsequence_stack
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
2.3.2順序棧及其實(shí)現(xiàn)
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
2.3.2順序棧及其實(shí)現(xiàn)
棧的實(shí)現(xiàn)方式一般有兩種:順序存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ)。
本小節(jié)將給出棧的順序存儲(chǔ)實(shí)現(xiàn)。
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
2.3.2順序棧及其實(shí)現(xiàn)
棧的實(shí)現(xiàn)方式一般有兩種:順序存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ)。
本小節(jié)將給出棧的順序存儲(chǔ)實(shí)現(xiàn)。
棧的順序存儲(chǔ)方式就是在順序表的基礎(chǔ)上對(duì)插入
和刪除操作限制它們?cè)陧樞虮淼耐欢诉M(jìn)行,所以同
順序表一樣也可用一維數(shù)組表示。
一般地,可以設(shè)定一個(gè)足夠大的一維數(shù)組存儲(chǔ)棧,
數(shù)組中下標(biāo)為0的元素就是棧底,對(duì)于棧頂,可以設(shè)一
個(gè)指針top指示它。
為了方便,設(shè)定top所指的位置是下一個(gè)將要插入
的結(jié)點(diǎn)的存儲(chǔ)位置,這樣,當(dāng)top=0時(shí)就表示是一個(gè)空
的棧。一個(gè)棧的幾種狀態(tài)以及在這些狀態(tài)下棧頂指針
top和棧中結(jié)點(diǎn)的關(guān)系如下圖所示。
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
數(shù)組下標(biāo)數(shù)組下標(biāo)數(shù)組下標(biāo)
topf
MAXSIZE-1MAXSIZE.1kMAXSIZE-1
!!!!
2top—2kj2
1ki1ki1
topf0ko0ko0
(a)空棧⑻有兩個(gè)結(jié)點(diǎn)的棧(c)棧已滿(mǎn)
PEF文件使用"pdfFactoryPro”試用版本創(chuàng)建WAWfincprint.comcn
棧的順序存儲(chǔ)結(jié)構(gòu)的C語(yǔ)言描述如下:
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年金融服務(wù)外包履約保證金合同范本3篇
- 2025年度大連生豬產(chǎn)業(yè)鏈上下游合作開(kāi)發(fā)合同3篇
- 2024年高效能太陽(yáng)能熱水裝置安裝合同一
- 2024版終止購(gòu)銷(xiāo)合同協(xié)議書(shū)
- 雙減分層書(shū)面作業(yè)設(shè)計(jì)案例-(含評(píng)價(jià)與反思)人教版PEP小學(xué)英語(yǔ)五年級(jí)下冊(cè)-Unit1-My-day
- 2025年度水果種植技術(shù)培訓(xùn)與推廣合同3篇
- 2024年車(chē)輛租賃與維護(hù)合同
- 2025年度電視劇劇本經(jīng)紀(jì)代理合同3篇
- 2024版標(biāo)準(zhǔn)租車(chē)合同3篇
- 2024年版租賃代理合同標(biāo)的及代理服務(wù)內(nèi)容詳解
- 鐵路工程主要建材碳排放因子、常用施工機(jī)械臺(tái)班能源用量、類(lèi)運(yùn)輸方式、能源碳排放因子、不同植栽方式綠化固碳量
- 綠建評(píng)分報(bào)告模板
- 地脈動(dòng)測(cè)試原理及應(yīng)用
- 基坑排水計(jì)算
- 原料罐區(qū)設(shè)備操作規(guī)程
- (完整版)西交大少年班選拔試題語(yǔ)文試題
- SEMI E37-0298 HIGH-SPEED SECS MESSAGE SERVICES (HSMS) GENERIC協(xié)議原版文件
- 口腔種植病歷書(shū)寫(xiě)格式要求及病歷模板
- 項(xiàng)目施工員安全生產(chǎn)責(zé)任制考核記錄
- 第一講 馬克思主義中國(guó)化時(shí)代化新的飛躍PPT習(xí)概論2023優(yōu)化版教學(xué)課件
- 便攜式血糖儀管理和臨床操作規(guī)范
評(píng)論
0/150
提交評(píng)論