栈
栈是一种只能在一端进行插入或删除操作的线性表。
线性表:栈的逻辑结构属于线性表,只不过在操作上加了一些约束。
一端:可以插入或者删除元素的一端叫栈顶,另一端叫栈底。
顺序栈
1 int stack[maxSize]; 2 int top = -1; 3 4 //元素入栈 5 stack[++top] = x; 6 7 //元素出栈 8 x = stack[top--];
链栈
1 LNode *head = (LNode*)malloc(sizeof(LNode)); 2 head→next = NULL; 3 LNode *top = NULL; 4 5 //元素入栈 6 top = (LNode*)malloc(sizeof(LNode)); 7 top→next = NULL: 8 top→data = ‘A‘; 9 top→next = head→next; 10 head→next = top; 11 12 //元素出栈 13 x = top→data; 14 head→next = top→next; 15 free(top); 16 top = head→next; 17 18 /*head→next == NULL为真,则栈空; 19 只要有足够的内存,栈就不会满*/
队列
队列是一种插入元素只能在一端能进,删除元素只能在另一端进行的线性表。
线性表:队列的逻辑结构属于线性表,只不过在操作上加了一些约束。
一端:可以插入元素的一端叫队尾(rear)。
另一端:可以删除元素的一端叫对头(front)。
顺序队
1 int queue[maxSixe]; 2 int front = 0,rear = 0; 3 4 //元素进队 5 6 queue[++rear] = x; 7 8 //元素出队 9 x = queue[++front]
循环队列
1 //入队 2 rear = (rear+1)%maxSize; 3 queue[rear]=x; 4 5 //出队 6 front = (front+1)%maxSize; 7 x = queue[front]; 8 9 //front == rear 队空 10 11 //front == (rear+1)%maxSize为真。
链队
1 typedef struct{ 2 LNode *front; 3 LNode *rear; 4 }queue;
原文地址:https://www.cnblogs.com/SanChauncy/p/11180021.html
时间: 2024-10-08 19:53:25