注册 登录
编程论坛 JAVA论坛

为什么用数据结构栈的“后进先出”特性写的逆转代码,会出现最后数字打印2次

小二狗 发布于 2016-03-15 11:24, 2414 次点击
#include <stdio.h>
#include "sqstack.h"

int main (int argc,char *argv[])
{
    SqStack sta;
    int score[8]={1,2,3,4,5,6,7,8};
    InitStack(&sta);
    int i;
    for(i=0;i<8;i++)
    {
       if(!Push(&sta,score[i]))
       {
        printf("系统错误!\n");
        return 0;
        }
        printf("%d\t",score[i]);
     }
        printf("\n");
    printf("逆转后的序列:\n");
     /* for(i=0;i<8;i++)
        {  Pop(&sta,&score[i]);
            printf("%d\t",score[i]);
        }
      */
      while(!StackEmpty(sta))
      {
           if(!Pop(&sta,&score[i]))
              {
                  printf("系统错误!\n");
                  return 0;
               }
          printf("%d\t",score[i]);      
       }  
    return 1;
}



结果如下:
1       2       3       4       5       6       7       8
逆转后的序列:
8       7       6       5       4       3       2       2
--------------------------------
Process exited after 0.1426 seconds with return value 1
请按任意键继续. . .


[此贴子已经被作者于2016-3-15 22:36编辑过]

3 回复
#2
小二狗2016-03-15 11:30
我看好像是
while(!StackEmpty(sta))
      {
          if(!Pop(&sta,&score[i]))
          {
              printf("系统错误!\n");
            return 0;
        }
              printf("%d\t",score[i]);      
      }  
这出现错误


[此贴子已经被作者于2016-3-15 11:37编辑过]

#3
z136314409762016-03-15 20:02
你确定 你写的是Java
不是 c?
#4
小二狗2016-03-15 22:36
回复 3楼 z13631440976
不好意思,是C,我习惯性发到Java区了。。。。。
1