• 数据结构-栈跟队列基础部分


    栈-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;

    队满:

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

  • 相关阅读:
    SQL 去重 DISTINCT 语法
    urllib2 urllib urllib3的区别联系
    urllib库中常见的类和方法
    python模块之json pickle
    python os模块
    python的常见内置模块之-----time
    列表,队列,栈,链表的内存模型
    open函数
    session和cookie
    随笔小skill
  • 原文地址:https://www.cnblogs.com/dalyday/p/9967066.html
Copyright © 2020-2023  润新知