c语言输入n个数据元素,分别入栈和入队列,然后出栈和出队列,输出这n个数据元素。
时间: 2024-05-04 12:15:23 浏览: 39
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct Stack {
int data[MAXSIZE];
int top;
} Stack;
typedef struct Queue {
int data[MAXSIZE];
int front;
int rear;
} Queue;
void initStack(Stack *s) {
s->top = -1;
}
void push(Stack *s, int val) {
if (s->top == MAXSIZE - 1) {
printf("Stack Overflow\n");
return;
}
s->data[++s->top] = val;
}
int pop(Stack *s) {
if (s->top == -1) {
printf("Stack Underflow\n");
return -1;
}
return s->data[s->top--];
}
int isEmptyStack(Stack *s) {
return s->top == -1;
}
void initQueue(Queue *q) {
q->front = q->rear = -1;
}
void enqueue(Queue *q, int val) {
if (q->rear == MAXSIZE - 1) {
printf("Queue Overflow\n");
return;
}
q->data[++q->rear] = val;
if (q->front == -1) {
q->front = 0;
}
}
int dequeue(Queue *q) {
if (q->front == -1) {
printf("Queue Underflow\n");
return -1;
}
int val = q->data[q->front];
if (q->front == q->rear) {
q->front = q->rear = -1;
} else {
q->front++;
}
return val;
}
int isEmptyQueue(Queue *q) {
return q->front == -1;
}
int main() {
int n, val, i;
Stack s;
Queue q;
initStack(&s);
initQueue(&q);
printf("Enter the number of elements: ");
scanf("%d", &n);
printf("Enter the elements:\n");
for (i = 0; i < n; i++) {
scanf("%d", &val);
push(&s, val);
enqueue(&q, val);
}
printf("Popped from Stack: ");
while (!isEmptyStack(&s)) {
printf("%d ", pop(&s));
}
printf("\nDequeued from Queue: ");
while (!isEmptyQueue(&q)) {
printf("%d ", dequeue(&q));
}
printf("\n");
return 0;
}
```