단일 체인 대기열 구조(C 언어)

2347 단어
//------     

# include 
# include 
# include 

typedef struct Node
{
    int data;               //     
    struct Node * next; //             
}Node,* pNode;

typedef struct LinkQueue
{
    pNode front;  //    
    pNode rear;   //    
}LinkQueue, * pLinkQueue;

//     
void init(pLinkQueue Q);
//    
void DestroyQueue(pLinkQueue Q);
//        
bool is_empty(pLinkQueue Q);
//  
void en_queue(pLinkQueue Q,int val);
//  
bool de_queue(pLinkQueue Q,int * pVal);
//        
void treaverse(pLinkQueue Q);

int main(void)
{
    LinkQueue Q;

    init(&Q);
    en_queue(&Q,1);
    en_queue(&Q,2);
    en_queue(&Q,3);
    en_queue(&Q,4);

    treaverse(&Q);

    int val;

    if(de_queue(&Q,&val)){
        printf("    ,    :%d 
",val); } treaverse(&Q); return 0; } void init(pLinkQueue Q) { // Q, Q->front = Q->rear = (pNode)malloc(sizeof(Node)); if(Q->front == NULL){ printf(" !"); exit(-1); } Q->front->next = NULL; // , } void en_queue(pLinkQueue Q, int val) { // , // pNode pNew = (pNode)malloc(sizeof(Node)); if(pNew == NULL) { printf(" "); exit(-1); }else{ pNew->data = val; // pNew->next = NULL; Q->rear->next = pNew; Q->rear = pNew; } } bool is_empty(pLinkQueue Q) { if(Q->front == Q->rear) // || , return true; else return false; } bool de_queue(pLinkQueue Q,int *pVal) { // if(is_empty(Q)) { return false; }else{ pNode p = Q->front; // *pVal = p->next->data; Q->front = Q->front->next; // if(Q->rear == p) // , , { Q->rear = Q->front; } free(p); // return true; } } void treaverse(pLinkQueue Q) { pNode p = Q->front->next; while(p != NULL) { printf("%d ", p->data); p = p->next; } printf("
"); }

좋은 웹페이지 즐겨찾기