zoukankan      html  css  js  c++  java
  • c语言描述的链队列的基本操作

    #include<stdio.h>
    #include<stdlib.h>
    #define ok 0
    #define error 1 
    //链队列特点在于不仅有链的头指针和尾指针,还有组成链的每一个节点,所以结构体要设置两个
    typedef struct qlnode{
        int data;
        struct qlnode *next;
    }Qlnode;
    typedef struct {
        Qlnode *front;
        Qlnode *rear;
    }Ql;
    int InitQl(Ql *ql){
        ql->front=ql->rear=(Qlnode *)malloc(sizeof(Qlnode));
        if(!ql->front){
            printf("分配内存失败");
            exit(error);
        }//每一次都要判断分配内存是否成功了
        ql->front->next=NULL;//设置头结点为空
        printf("分配成功!
    ");
        return ok;
    }
    int EnQl(Ql *ql,int e){
        Qlnode *p;
        p=(Qlnode *)malloc(sizeof(Qlnode));
        p->data=e;p->next=NULL;
        ql->rear->next=p;//队尾插入p
        ql->rear=p;//另p为队尾
        return ok;
    }
    
    int DeQl(Ql *ql){
        int e;
        Qlnode *p;
        if(ql->front=ql->rear){//空的链队列的判决条件为头指针和尾指针均指向头结点
            printf("链队列为空");
            exit(error);
        }
        p=ql->front->next;
        e=p->data;
        ql->front->next=p->next;//重新赋予头结点后的第一个结点
        free(p);
        return ok;
    
    }
    int  Destroy(Ql *ql){
        while(ql->front){
            ql->rear=ql->front->next;
            free(ql->front);
            ql->front=ql->rear;//通过ql->rear来保存队头释放之前的下一节点,然后赋给下一次循环的新队头;
        }
    }
    int Traverse(Ql *ql){
        Qlnode *p=ql->front->next;
        while(p){
            printf("%d 
    ",p->data);
            p=p->next;
        };
    }
    void main(){
        Ql ql;
        int i,j;
        j=0;
        InitQl(&ql);
        while(j<5){
            printf("输入要插入的值:
    ");
            scanf("%d",&i);
            EnQl(&ql,i);
            j++;
        }
        printf("
    ");
        Traverse(&ql);
        //printf("%d 
    ",(ql.front->next)->data);ql->front->next->data,这样就不对因为ql不是指针,应该使用ql.xxx
    }
  • 相关阅读:
    Java IO流-NIO简介
    Java IO流-Properties
    Java IO流-序列化流和反序列化流
    Codeforces Round #371 (Div. 1) C
    bzoj 2326 矩阵快速幂
    IndiaHacks 2016
    HDU
    Educational Codeforces Round 51 (Rated for Div. 2) F
    Codeforces Round #345 (Div. 1) D
    Codeforces Round #300 E
  • 原文地址:https://www.cnblogs.com/zzy-frisrtblog/p/5714033.html
Copyright © 2011-2022 走看看