zoukankan      html  css  js  c++  java
  • 数据结构-栈跟队列基础部分

    栈-stack(A pile of things)

    定义:栈是一种只能在一端进行插入或删除操作的线性表。

    特点:先进后出(First In,Last Out--FILO)

    1.顺序栈:

    栈的实现:

    int stack[maxSize];

    int top = -1

    元素入栈:

    stack[++top]  =  值1;  // top先自增1,再赋值值1

    元素出栈:

    值2 = stack[top--];  // 先取top所指的值2, top再减1

    栈空:

    top == -1为真,则栈空

    栈满:

    top == manSize - 1 为真,则栈满

    2.链式栈:

    创建带头结点链表:

    LNode *head = (LNode*) malloc(sizeof(LNode));

    head->next = NULL;

    LNode *top = NULL;

    元素A入栈

    LNode *head = (LNode*) malloc(sizeof(LNode));

    head->next = NULL;

    top = (LNode*) malloc(sizeof(LNode));

    top->next = NULL;

    top->data = 'A';

    top->next = head->next;

    head->next = top;

    连续多个元素入栈(在头结点处插入):

    元素C出栈:

    LNode *head = (LNode*) malloc(sizeof(LNode));

    head->next = NULL;

    x = top->data;

    head->next = top->next;

    free(top);

    top = head->next;

    栈空:

    head->next = NULL 为真,则栈空;

    栈满:

    只要有足够的内存,栈就不会满。

    队列-Queue

    定义:队列是一种插入元素只能在一端能进,删除元素只能在另一端进行的线性表。

    特点:先进先出(First In,First Out--FILO)

    1.顺序队:

    实现队:

    int queue[maxSize];

    int front = 0,rear = 0;

    环状入队:

    rear = (rear + 1)%maxSize;

    queue[++rear] = x;

    环状出队:

    rear = (front + 1)%maxSize;

    x = queue[++front];

    环状对空:

    front == rear为真

    环状队满:

    front == (rear + 1) % maxSize为真

    2.链队:

    入队D节点(rear指针所指的节点后面插入新节点,让rear指针指向新节点D):

    rear->next = NULL;

    rear->data = 'D';

    rear->next = p->next;

    p->next = rear;

    出队(删除第一个数据节点):

    x = q->data;

    front->next = q->next;

    free(q);

    q = front->next;

    对空:

    头结点的next指针为NULL;

    队满:

    只要有足够的内存,队就不会满。

  • 相关阅读:
    素因子分解
    【转载】一张表看懂LTE和5G NR的区别
    看国家宝藏,顺便学习一下国密算法
    LTE-Advanced(4G)主要技术学习:CA、CoMp、HetNet
    未来移动通信的需求与挑战
    傅里叶级数
    正余弦函数的复指数表示
    网络基础——相关面试考点
    操作系统——相关面试考点
    小米2015笔试编程题
  • 原文地址:https://www.cnblogs.com/dalyday/p/9967066.html
Copyright © 2011-2022 走看看