링크 구현 대기 열 - - 데이터 구조 작업

작업 코드 2:
- 작업 code 1 의 기능 을 모방 하여 교과서 의 링크 구현 대기 열 을 완전 하 게 실현 합 니 다.
- main 함수 호출 을 통 해 우호 적 인 인간 과 컴퓨터 의 상호작용 입력 이 필요 합 니 다.
작업 코드 1
링크 구현 대기 열 코드:
#include
#define OK 1
#define ERROR 0
using namespace std;
typedef int QElemType;
typedef int Status;
typedef int SElemType;
typedef struct QNode
{
        QElemType data;
        struct QNode *next;
}QNode,*QueuePtr;
typedef struct
{
        QueuePtr front;
        QueuePtr rear;
}LinkQueue;

LinkQueue q;
QueuePtr p;
Status InitQueue(LinkQueue &Q)
{
        Q.front = Q.rear = new QNode;
        Q.front->next = NULL;
        return OK;
}
Status EnQueue(LinkQueue &Q,QElemType &e)
{
        p = new QNode;
        p->data = e;
        p->next = NULL;
        Q.rear->next = p;
        Q.rear = p;
        return OK;
}

Status DeQueue(LinkQueue &Q,QElemType &e)
{
        if(Q.front == Q.rear)
                return ERROR;
        p = Q.front->next;
        e = p->data;
        Q.front->next = p->next;
        if(Q.rear == p)
                Q.rear = Q.front;
        delete p;
        return OK;
}

SElemType GetHead(LinkQueue Q)
{
        if(Q.front != Q.rear)
                return Q.front->next->data;
}
void menu()
{
        printf(
               "1.  
"
\ "2.
"
\ "3.
"
\ "4.menu
"
"0.
"
\ ); } int main() { menu(); int e,choose; int k=0; InitQueue(q); while(true) { cout<<" :"; cin>>choose; switch(choose) { case 1: printf(" :"); cin>>e; EnQueue(q,e); if(q.front != q.rear) { printf(" :"); for(QueuePtr i=q.front->next;i!=q.rear->next;i=i->next) printf("%d ",i->data); } printf("
"
); break; case 2: if(q.front == q.rear) printf(" !
"
); else { DeQueue(q,e); printf(" %d
"
,e); } if(q.front != q.rear) { printf(" :"); for(QueuePtr i=q.front->next;i!=q.rear->next;i=i->next) printf("%d ",i->data); } printf("
"
); break; case 3: e=GetHead(q); printf(" :%d
"
,e); break; case 4: menu(); break; case 0: k=1; break; } if(k) break; } return 0; }

좋은 웹페이지 즐겨찾기