菜单驱动程序使用数组en-queue执行以下队列操作,de-queue,count元素数量并在c ++中显示?

时间:2013-11-06 03:30:35

标签: c++ arrays

我需要制作一个C ++程序 菜单驱动程序使用数组en-queue执行以下队列操作,de-queue,count元素数量并在c ++中显示? 如何制作这个? 我是非常弱的c ++任何人都可以指导我或帮助我或链接我一个完整的程序来研究和理解它? 我试过,但我很努力,所以我真的需要帮助

是对还是不对?

#include<iostream.h>
#include<conio.h>
void push(int st[],int data,int &top);      //declaring a push class
void disp(int st[],int &top);       //declaring display class
int pop(int st[],int &top);                       //declaring a pop class
int flg=0;
int top=-1,tos=-1;
int st[50];

void push(int st[],int data,int &top)          //push
{
    if(top==50-1)
    flg=0;
    else
    {
        flg=1;
        top++;
        st[top]=data;
    }
}

int pop(int st[],int &top)                      //pop
{
    int pe;
    if(top==-1)
    {
        pe=0;
        flg=0;
    }
    else
    {
        flg=1;
        pe=st[top];
        top--;
    }

    return(pe);
}

void disp(int st[],int &top)                //display
{
    int i;
    if(top==-1)
    {
        cout<<"\nStack is Empty";
    }
    else
    {
        for(i=top;i>=0;i--)
        cout<<"\t"<<st[i];
    }
}

void main()
{
    int dt,opt;                              // declare varible
    int q=0;
    clrscr();
    cout<<"\t\t\tStack operations";
    cout<<"\n\n\tMain Menu.........";
    cout<<"\n\n1.Push";
    cout<<"\n\n2.Pop";
    cout<<"\n\n3.Exit";
    cout<<"\n\n4.display";

    do                                     // useing do while for to make choice and select any options
    {
        cout<<"\n\n\tEnter Your Choice 1-4:";            //entering your choice
        cin>>opt;

        switch(opt)
        {
            case 1:
                cout<<"\nEnter the Element to be Push:";
                cin>>dt;
                push(st,dt,tos);

                if(flg==1)
                {
                    cout<<"the push is done";

                    if(tos==50-1)
                        cout<<"\nStack is Now Full";
                }
                else
                   cout<<"\nStack Overflow Insertion Not Possible";
            break;
            case 2:
                dt=pop(st,tos);
                if(flg==1)
                {
                    cout<<"\n\tData Deleted From the Stack is:"<<dt;
                    cout<<"\n \t pop is done";
                }
                else
                    cout<<"\nStack Empty,Deletio Not Possible:";
            break;
            case 3:
                q=1;
            break;
        default:
                            cout<<"\nWrong Choice Enter 1-3 Only";

        case 4:
                disp(st,tos);
        break;
        }
    } while(q!=1);
}

1 个答案:

答案 0 :(得分:0)

STL库中有一个队列集合,它提供了上面所需的所有功能,如果由于某种原因你不允许使用它,那么我建议以下逻辑可能会有所帮助

  • 当从队列的前面弹出一个项目时,所有其他项目必须向下复制1个元素,使用for循环

E.g

for (int index = 1; index < arraySize; index++)
{
     if (item[index] == -1)
     {
         item[index-1] = -1;
         break;
     }

     item[index - 1] = item[index];
}
  • 删除元素时,队列中该项后面的所有项必须向下移动1个空格,找到要删除的元素的索引并使用for循环

E.g

for (int index = deletedItemIndex; index < arraySize; index++)
{
     if (item[index] == -1)
         break;

     item[index] = item[index + 1];
}
  • 当一个项目被添加到队列中时,它只是放在队列的末尾,但不一定是数组的末尾(可能初始化所有数组元素,以-1开始,这样你就可以轻松测试是否你在队列的最后)