YXTS122 2016-01-06 12:22 采纳率: 100%
浏览 1415
已采纳

代码中有两条语句看不懂,能解释一下吗?

通过调试发现empty()函数执行了6次,而pop()和dequeue()分别执行了4次,
while(!S.empty()&&S.pop()==Q.dequeue());这条语句到底等价于哪条语句,
return (ptr==NULL);这条语句到底等价于哪条语句?

 #include<iostream>
using namespace std;
struct list
{
    int data;   struct list *next;
};
class Stack
{
    struct list *ptr;
public:
    Stack()
    {
        ptr=NULL;
    }
    void push(int x)//进栈成员函数
    {
        struct list *newnode=new struct list;
        newnode->data=x;
        newnode->next=ptr;
        ptr=newnode;
    }
    int pop()//出栈成员函数
    {
        //struct list *top;
        int value;
        value=ptr->data;
        //top=ptr;
        ptr=ptr->next;
        //delete top;
        return value;
    }
    int empty()
    {
        return (ptr==NULL);//为什么不能直接写成return NULL;?
    }
};
class Queue
{
    struct list *ptrf,*ptrb;
public:
    Queue()
    {
        ptrf=ptrb=NULL;
    }
    void enqueue(int x)//进队成员函数
    {
        struct list *newnode=new struct list;
        newnode->data=x;
        newnode->next=NULL;
        if(ptrb==NULL)
            ptrf=ptrb=newnode;
        else
        {
            ptrb->next=newnode;
            ptrb=newnode;
        }
    }
    int dequeue()//出队成员函数
    {
        //struct list *tmp;
        int value;
        value=ptrf->data;
        //tmp=ptrf;
        ptrf=ptrf->next;
        //delete tmp;
        return value;
    }
};
void main()
{
    Stack S;//定义一个栈对象
    Queue Q;//定义一个队列对象
    char ch;
    cout<<"输入数据:";
    while((ch=getchar())!='.')
    {
        S.push(ch);
        Q.enqueue(ch);
    }
    while(!S.empty()&&S.pop()==Q.dequeue());//退栈和出队,比较是否相同
    if(S.empty())
        cout<<"输入的是回文数据."<<endl;
    else
        cout<<"输入的不是回文数据."<<endl;
    system("pause");
}


图片说明

图片说明

  • 写回答

4条回答 默认 最新

  • ysuwood 2016-01-06 14:34
    关注

    粘错了

     while( !S.empty() )
    {
        if( S.pop()!=Q.dequeue() ) break;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!