欢迎光临散文网 会员登陆 & 注册

C/C++数据结构知识教程:栈和队列!大学数据结构课程又一难题,90分钟详细讲解

2023-02-01 16:17 作者:废物学短  | 我要投稿


22:15


这里两种方法不懂的话可以看看我的另一个笔记:C语言入门教程 第12讲 结构体


30:37


代码见附录



51:23





-----待续。。。。。。




#include <stdio.h>

#include <stdlib.h>

struct Node {

    int data;

    struct Node*next;

};

struct stack {

    struct Node*stackTop;    //栈顶标i记

    int size;                //栈中元素个数

};

//创建结点

struct Node *createNode(int data) {

    struct Node*newNode = (struct Node*)malloc(sizeof(struct Node));

    newNode->data = data;

    newNode->next = NULL;

    return newNode;

};

//创建栈,就是创建一个struct stack的变量

struct stack*createstack() {

    //创建过程就是初始化过程

    struct stack*myStack = (struct stack*)malloc(sizeof(struct stack));

    myStack->stackTop = NULL;

    myStack->size = 0;

    return myStack;

}

//写 数的方式-->自己写代码的思维

void push(struct stack *myStack, int data) {

    //插入的这个结点创建出来

    struct Node *newNode = createNode(data);

    //入栈操作就是链表表头插入

    newNode->next = myStack->stackTop;

    myStack->stackTop = newNode;

    myStack->size++;

}

//获取栈顶元素

int top(struct stack*myStack) {

    //防御编程

    if (myStack->size == 0) {

        printf("栈为NULL,无法获取栈顶元素!\n");

        system("pause");

        return myStack->size;

    }

    return myStack->stackTop->data;

}

//出栈

void pop(struct stack*myStack) {

    if (myStack-> size == 0) {

        printf("栈为NULL,无法出栈!\n");

        system("pause");

    } else {

        struct Node*nextNode = myStack->stackTop->next;

        free(myStack->stackTop);

        myStack->stackTop = nextNode;

        myStack->size--;

    }

}

//万金油函数

int empty(struct stack*myStack)

{

    if (myStack->size ==0)

        return 0;

    return 1;

}

int main()

{

    struct stack*myStack=createstack();

    push(myStack,1);

    push(myStack,2);

    push(myStack,3);

    while (empty(myStack))

    {        printf("%d\t",top(myStack));

    pop(myStack);

    }

    printf("\n");

    system("pause");

    return 0;

}

   




C/C++数据结构知识教程:栈和队列!大学数据结构课程又一难题,90分钟详细讲解的评论 (共 条)

分享到微博请遵守国家法律