数据结构---列队(单链表实现)

版权声明:本文章刊载的内容,多数为读者作者笔记,笔记内容来自于潭州教育提供的学习资源以及读者本人阅读的文章,特此声明! https://blog.csdn.net/qq_41453285/article/details/84990464

一、理论知识

待续

二、代码实现

1.节点结构体、栈顶、尾指针结构体定义

typedef int ElemType;
typedef struct node
{
    ElemType data;
    struct node* pNext;
}node,*pNode;

typedef struct Queue//保存栈的头。尾指针
{
    pNode front;
    pNode rear;
}Queue,*pQueue;

2.初始化栈

void initQueue(pQueue qu)
{
    qu->front = NULL;
    qu->rear = NULL;
}

3.判断栈是否为空

bool isEmpty(pQueue qu)
{
    return (!qu->front) && (!qu->rear);
}

4.得到栈顶元素

ElemType getFrontData(pQueue qu)
{
    if (!isEmpty(qu))
    {
        return qu->front->data;
    }
    return -1;
}

5.压栈

void pushQueue(pQueue qu,ElemType data)
{
    pNode newNode = new node;
    newNode->data = data;
    newNode->pNext = NULL;
    if (!qu->front)
    {
        qu->front = newNode;
        qu->rear = newNode;
    }
    else
    {
        qu->rear->pNext = newNode;
        qu->rear = newNode;
    }
}

6.出栈

void popQueue(pQueue qu)
{
    if (isEmpty(qu))
        return;
    pNode tempNode = qu->front->pNext;
    pNode delNode = qu->front;
    if (!tempNode)
    {
        qu->front = qu->rear = tempNode;
        delete delNode;
        delNode = NULL;
    }
    else
    {
        qu->front = tempNode;
        delete delNode;
        delNode = NULL;
    }
}

7.销毁栈

void destoryQueue(pQueue qu)
{
    if (!isEmpty(qu))
    {
        pNode tempNode;
        while (qu->front)
        {
            tempNode = qu->front;
            qu->front = tempNode->pNext;
            delete tempNode;
        }
    }
}

8.打印栈内元素

void showQueue(pQueue qu)
{
    if (isEmpty(qu))
        printf("栈为空,无法打印!\n");
    pNode tempNode = qu->front;
    while (tempNode)
    {
        printf("%d->", tempNode->data);
        tempNode = tempNode->pNext;
    }
}

9.运行代码

猜你喜欢

转载自blog.csdn.net/qq_41453285/article/details/84990464
今日推荐