• 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
    }
  • 相关阅读:
    SSL 1010——方格取数
    SSL 1558——科技庄园
    SSL 2295——暗黑破坏神
    SSL 2294——打包
    SSL 2293——暗黑游戏
    SSL 2305——竞赛总分
    SSL 1072——砝码称重
    SSL 2291——分组背包
    SSL 2290——潜水员
    SSL 2301——混合背包
  • 原文地址:https://www.cnblogs.com/zzy-frisrtblog/p/5714033.html
Copyright © 2020-2023  润新知