下面這個(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;
}
將鏈表逆置,例如
原鏈表:
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出隊(duì)列一個(gè)元素,此元素再入棧S,
隊(duì)列出空后,開(kāi)始依次彈棧,這樣原隊(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)!
將隊(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)