順序棧的逆置代碼Java 編寫(xiě)算法實(shí)現(xiàn)順序表的逆置

急?。。?!借助棧將單鏈表逆置?會(huì)的好友請(qǐng)幫幫忙,先謝!

下面這個(gè)程序是通過(guò)棧對(duì)順序表(數(shù)組)逆置,你只要把它改為鏈表的就行了。

成都創(chuàng)新互聯(lián)成立于2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元沭陽(yáng)做網(wǎng)站,已為上家服務(wù),為沭陽(yáng)各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220

#includeiostream

#includestdlib.h

#includestring

#includemalloc.h

using namespace std;

#define MAXSIZE 100

typedef int ElemType;

typedef struct

{

ElemType elem[MAXSIZE];

int top;

}Stack;

int initStack(Stack **s)

{

(*s)-top=-1;

return 0;

}

int push(Stack **s,ElemType elem)

{

if((*s)-top==MAXSIZE-1) return -1;

else

{

(*s)-top=(*s)-top+1;

(*s)-elem[(*s)-top]=elem;

}

return 0;

}

int pop(Stack **s,ElemType e)

{

if((*s)-top==-1)

{

cout"達(dá)到下界"endl;

return -1;

}

e=(*s)-elem[(*s)-top];

coute" ";

(*s)-top=(*s)-top-2;

while((*s)-top!=-1)

{

e=(*s)-elem[(*s)-top];

coute" ";

(*s)-top=(*s)-top-1;

}

coutendl;

return 0;

}

int isEmpty(Stack *s)

{

if (s-top==-1)

return 1;

else

return 0;

}

int main(void)

{

ElemType elem,e;

Stack *s=(Stack *)malloc(sizeof(Stack));

initStack(s);

cout"請(qǐng)依次輸入你要存放在棧中的數(shù)"endl;

cinelem;

while(1)

{

push(s,elem);

if (getchar()=='#')

break;

cinelem;

}

cout"棧中的元素為:"endl;

while(!isEmpty(s))

{

pop(s,e);

}

return 0;

}

利用一個(gè)順序棧將單鏈表逆置是什么意思?不理解逆置跟順序棧有什么關(guān)系

將鏈表逆置,例如

原鏈表:

1-2-3-4-5

逆置之后

5-4-3-2-1

使用棧,利用?!昂筮M(jìn)先出”的特性。

當(dāng)你把原鏈表按其 1 2 3 4 5的順序入棧,再出棧時(shí),順序即為5 4 3 2 1

形成一個(gè)新的鏈表,達(dá)到逆置的目的。

已知Q是一個(gè)非空順序隊(duì)列,S是一個(gè)順序棧棧,請(qǐng)用自然語(yǔ)言描述使Q中的所有元素逆置的算法思想

Q出隊(duì)列一個(gè)元素,此元素再入棧S,

隊(duì)列出空后,開(kāi)始依次彈棧,這樣原隊(duì)列就逆置了

題目是:利用順序棧將帶頭結(jié)點(diǎn)的鏈隊(duì)列(a1,a2,…,an)逆置為(an,an-1,…,a1),但是在C語(yǔ)言下執(zhí)行不對(duì)

你使用棧時(shí)SeqStack *S;沒(méi)有指向任何存儲(chǔ)單元。事實(shí)上,S=NULL(因?yàn)槭侨肿兞?,自?dòng)設(shè)為0),因此對(duì)其成員變量的引用(如S-base = (SElemType*) malloc (STACK_INIT_SIZE * sizeof(SElemType));)是錯(cuò)誤的

即將

typedef struct {

SElemType *base;

SElemType *top;

int stacksize;

} SeqStack;

SeqStack *S;//本句改為 SeqStack *S=(SeqStack *S)malloc(sizeof(SeqStack));即可

或改為SeqStack Q,*S=Q;

或在int InitStack (SeqStack *S )中更改:更改為int InitStack (SeqStack *S ){S=(SeqStack *S)malloc(sizeof(SeqStack));

歡迎繼續(xù)提問(wèn)!

已知q是一個(gè)非空順序隊(duì)列,s是一個(gè)順序棧,請(qǐng)?jiān)O(shè)計(jì)一個(gè)算法,實(shí)現(xiàn)將隊(duì)列q中所有元素逆置

將隊(duì)列中的元素順序壓棧,由于隊(duì)列先進(jìn)先出,而棧是后進(jìn)先出,先進(jìn)棧的就在棧底,而后進(jìn)的就在棧頂,然后等到隊(duì)列所有元素進(jìn)入棧中,即隊(duì)列為空時(shí),再將棧中的元素順序彈入隊(duì)列,這樣原先隊(duì)列中最后進(jìn)入棧的就在棧頂,而彈出棧后,進(jìn)入隊(duì)列就在隊(duì)列頭部,就可以實(shí)現(xiàn)隊(duì)列的元素逆置。

文章名稱:順序棧的逆置代碼Java 編寫(xiě)算法實(shí)現(xiàn)順序表的逆置
URL地址:http://muchs.cn/article8/hjecip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)、云服務(wù)器網(wǎng)站維護(hù)、App設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)