数据结构-c语言代码实现-链式队列的基本操作

动态分配链式存储结构

#define ElemType char

typedef struct Qnode{
    ElemType data;
    struct Qnode *next;
}Qnode;

struct QueueLink{
    Qnode *front,*rear; 
};

基本操作

  1. 初始化

void QueueLink_Init(QueueLink &Q){
    Q.front =Q.rear=(Qnode *)malloc(sizeof(Qnode));
    Q.front->next=NULL;
}
  1. 创建队

void QueueLink_Creat(QueueLink &Q){
    printf("输入队列成员个数:");
    int num=0;
    scanf("%d",&num);
    getchar();
    while(num--){
        Qnode *s=(Qnode *)malloc(sizeof(Qnode));
        printf("请输入入队成员:\n");
        scanf("%c",&s->data);
        getchar();
        s->next=NULL;
        Q.rear->next=s;
        Q.rear=s;
    }
}
  1. 入队

void QueueLink_Push(QueueLink &Q,ElemType newval){
    Qnode *s=(Qnode *)malloc(sizeof(Qnode));
    s->data=newval;
    s->next=NULL;
    Q.rear->next=s;
    Q.rear=s;
}
  1. 出队

void QueueLink_Pop(QueueLink &Q,ElemType &x){
    if(Q.front->next==NULL){
        printf("队空 出队失败\n");
    }
    else{
        x=Q.front->next->data;
        Qnode *p=Q.front->next;
        Q.front->next=p->next;
        if(p==Q.rear){
            Q.rear=Q.front;
        }
        free(p);
        printf("出队成功\n");
    }
}
  1. 读取队头元素

ElemType QueueSq_GetTopval(QueueSq Q){
    if(){
        printf("队空,读取队头元素失败\n");
    }
    else{
        printf("读取队头元素成功\n");
        return 
    }
} 
  1. 求队列长度

int QueueLink_Length(QueueLink Q){
    int num=0;
    Qnode *p=Q.front;
    while(p!=Q.rear){
        num++;
        p=p->next;
    }
    return num;
}
  1. 判空

void QueueLink_Isvoid(QueueLink Q)
{
    if(Q.front->next==NULL){
        printf("队为空\n");
    }
    else{
        printf("队不为空\n");
    }
}
  1. 打印队列

void QueueLink_Print(QueueLink Q){
    if(Q.front->next==NULL){
        printf("打印失败\n");
    }
    else{
        Qnode *p=Q.front;
        while(p->next!=NULL){
            p=p->next;
            printf("%c ",p->data);
        }
        printf("打印成功\n");
    }
}

代码实现结果

int main()
{
    QueueLink Q;
    QueueLink_Init(Q);
    QueueLink_Creat(Q);
    QueueLink_Isvoid(Q);
    QueueLink_Print(Q);
    printf("队头元素为:%c\n",QueueLink_GetTopval(Q));
    ElemType x;
    QueueLink_Pop(Q,x);
    QueueLink_Print(Q);
    printf("队列长度为:%d\n",QueueLink_Length(Q));
    QueueLink_Push(Q,x); 
    QueueLink_Print(Q);
}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值