基于c语言的队列栈代码
时间: 2023-10-08 22:09:56 浏览: 46
队列的C语言代码:
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 5
typedef struct {
int data[MAXSIZE];
int front;
int rear;
} Queue;
void initQueue(Queue *Q) {
Q->front = 0;
Q->rear = 0;
}
int isFull(Queue Q) {
return (Q.rear + 1) % MAXSIZE == Q.front;
}
int isEmpty(Queue Q) {
return Q.front == Q.rear;
}
void enQueue(Queue *Q, int x) {
if (isFull(*Q)) {
printf("队列已满,无法入队!\n");
return;
}
Q->data[Q->rear] = x;
Q->rear = (Q->rear + 1) % MAXSIZE;
}
int deQueue(Queue *Q) {
if (isEmpty(*Q)) {
printf("队列为空,无法出队!\n");
return -1;
}
int x = Q->data[Q->front];
Q->front = (Q->front + 1) % MAXSIZE;
return x;
}
void printQueue(Queue Q) {
int i = Q.front;
printf("队列元素为:");
while (i != Q.rear) {
printf("%d ", Q.data[i]);
i = (i + 1) % MAXSIZE;
}
printf("\n");
}
int main() {
Queue Q;
initQueue(&Q);
enQueue(&Q, 1);
enQueue(&Q, 2);
enQueue(&Q, 3);
printQueue(Q);
deQueue(&Q);
printQueue(Q);
enQueue(&Q, 4);
enQueue(&Q, 5);
enQueue(&Q, 6);
printQueue(Q);
return 0;
}
栈的C语言代码:
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 5
typedef struct {
int data[MAXSIZE];
int top;
} Stack;
void initStack(Stack *S) {
S->top = -1;
}
int isFull(Stack S) {
return S.top == MAXSIZE - 1;
}
int isEmpty(Stack S) {
return S.top == -1;
}
void push(Stack *S, int x) {
if (isFull(*S)) {
printf("栈已满,无法入栈!\n");
return;
}
S->top++;
S->data[S->top] = x;
}
int pop(Stack *S) {
if (isEmpty(*S)) {
printf("栈为空,无法出栈!\n");
return -1;
}
int x = S->data[S->top];
S->top--;
return x;
}
int getTop(Stack S) {
if (isEmpty(S)) {
printf("栈为空,无法取栈顶元素!\n");
return -1;
}
return S.data[S.top];
}
void printStack(Stack S) {
printf("栈元素为:");
while (!isEmpty(S)) {
printf("%d ", pop(&S));
}
printf("\n");
}
int main() {
Stack S;
initStack(&S);
push(&S, 1);
push(&S, 2);
push(&S, 3);
printStack(S);
push(&S, 4);
push(&S, 5);
push(&S, 6);
printStack(S);
return 0;
}