gpt4 book ai didi

c++ - 不确定如何反转我的堆栈?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:03:14 26 4
gpt4 key购买 nike

我正在尝试编写一个使用链表实现堆栈的程序,从用户那里接受无限的单词,直到输入单词“end”,将每个单词压入堆栈,向用户打印您已完成接受单词,然后您将反向列出句子,并将每个单词弹出给用户,以便它们以与输入时相反的顺序出现。我已经编写了代码,但我认为我的 pop 函数可能有问题,因为它没有以相反的顺序打印。只是我输入信息的顺序,这意味着它不会弹出,对吧?我不知道。

所以我只需要帮助弄清楚如何- 将每个单词弹出给用户,以便它们以与输入时相反的顺序出现

谢谢!这是我的代码:

#include<iostream>
#include<conio.h>
#include<stdlib.h>
using namespace std;
class node
{
public:
class node *next;
string data;
};

class stack : public node
{
node *head;
int tos;
public:
stack()
{
tos=-1;
}
void push(string x)
{
if (tos < 0 )
{
head =new node;
head->next=NULL;
head->data=x;
tos ++;
}
else
{
node *temp,*temp1;
temp=head;

tos++;
while(temp->next != NULL)
temp=temp->next;
temp1=new node;
temp->next=temp1;
temp1->next=NULL;
temp1->data=x;
}
}
void display()
{
node *temp;
temp=head;
if (tos < 0)
{
cout <<" stack under flow";
return;
}
while(temp != NULL)
{
cout <<temp->data<< " ";
temp=temp->next;
}
}
void pop()
{
node *temp;
temp=head;
if( tos < 0 )
{
cout <<"stack under flow";
return;
}
tos--;
while(temp->next->next!=NULL)
{
temp=temp->next;
}
temp->next=NULL;
}
};
main()
{
stack s1;
string input;

while (input != "end"){
cout <<"\n enter a element";
cin >> input;
s1.push(input);
}
s1.pop();


s1.display();

exit(0);
return (0);
}

最佳答案

int display(node * head)
{
if(head)
{
display(head->next);
cout<< head->data <<endl;
}
}

此显示函数将以相反的顺序打印您的堆栈。

关于c++ - 不确定如何反转我的堆栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26444095/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com