1
我寫了下面的C++代碼來實現可以推送和彈出整數,浮點數和字符串的堆棧。它工作正常只有一些價值。另外,當我第一次推東西並顯示它時,第一個元素總是在它後面有垃圾值。此外,我收到以下錯誤:假設我第一次推你好,並顯示它,前面提到的問題發生。現在,如果我推141並顯示,我會看到141旁邊的垃圾值。對於任何浮點值都是相同的。但是,如果我按1並顯示,則我看不到1旁邊的垃圾值。我只能得到1,就像我想要的那樣。我如何解決所有這些問題?謝謝。C++堆棧數據結構來推送和彈出字符串和浮點數據類型
我的代碼:
#include<iostream>
#include<conio.h>
#include<string.h>
using namespace std;
class stack {
private:
char stk[10][10];
int top;
public:
stack()
{
top=-1;
}
void push(char x[])
{
int count=0,i=0,n;
n=strlen(x);
if(top>9)
{cout << "Stack overflow";
return;}
else
{
top++;
for(i=0;i<n;i++)
{if(x[i]=='\0')
{count=i;
break;}
else
stk[top][i]=x[i];}
return;
for(i=count;i<n;i++)
stk[top][i]='\0';
}
}
void pop()
{
int i;
if(top==-1)
{
cout <<"Stack underflow";
return;
}
else
cout << stk[top--];
for(i=0;i<10;i++)
stk[top+1][i]='\0';
}
void display()
{
if(top==-1)
{
cout << "Stack empty";
return;
}
else
{
for(int i=top;i>-1;i--)
{cout << stk[i] << endl;}
}
}
};
int main()
{
char ch[10];
int x;
stack st;
while(1)
{
cout <<"\n1.push 2.pop 3.display 4.exit\nEnter your choice ";
cin >>x;
switch(x)
{
case 1: cout <<"Enter element ";
cin>>ch;
st.push(ch);
break;
case 2: st.pop(); break;
case 3: st.display(); break;
case 4: exit(0);
}
}
return 0;
}
如果您希望它存儲這三種不同的類型,請使用變體。它更乾淨。 – chris
您正在使用哪種編譯器?這甚至不能在gcc上編譯。你的主函數缺少一個類型,你從來沒有在你的push函數中聲明'count' ... – jaggedSpire
Dev C++。對於計數和主要功能類型抱歉。我編輯了這篇文章。請立即檢查。 – RaviTej310