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

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

队满:

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

posted @ 2018-11-19 15:43  dalyday  阅读(266)  评论(0编辑  收藏  举报