数据结构c++1、顺序栈的建立、取栈顶元素、入栈、出栈、求栈的长度、清空等操作。 2、循环队列的建立、取队中元素、入队、出队基本操作的实现。
时间: 2023-09-19 11:06:10 浏览: 185
1、顺序栈的建立、取栈顶元素、入栈、出栈、求栈的长度、清空等操作。
顺序栈的建立:
```c
#define MAX_SIZE 100 // 定义顺序栈的最大长度
typedef struct {
int data[MAX_SIZE]; // 存储栈中元素的数组
int top; // 栈顶指针
} SeqStack;
void InitSeqStack(SeqStack *s) {
s->top = -1; // 初始化栈顶指针为-1
}
```
取栈顶元素:
```c
int GetTop(SeqStack *s) {
if (s->top == -1) {
printf("Error: stack is empty!\n");
return -1;
}
return s->data[s->top]; // 返回栈顶元素
}
```
入栈:
```c
void Push(SeqStack *s, int x) {
if (s->top == MAX_SIZE - 1) {
printf("Error: stack is full!\n");
return;
}
s->top++; // 栈顶指针加1
s->data[s->top] = x; // 将元素x入栈
}
```
出栈:
```c
int Pop(SeqStack *s) {
if (s->top == -1) {
printf("Error: stack is empty!\n");
return -1;
}
int x = s->data[s->top]; // 取出栈顶元素
s->top--; // 栈顶指针减1
return x;
}
```
求栈的长度:
```c
int Length(SeqStack *s) {
return s->top + 1; // 栈的长度为栈顶指针+1
}
```
清空:
```c
void Clear(SeqStack *s) {
s->top = -1; // 将栈顶指针重置为-1,表示栈已清空
}
```
2、循环队列的建立、取队中元素、入队、出队基本操作的实现。
循环队列的建立:
```c
#define MAX_SIZE 100 // 定义循环队列的最大长度
typedef struct {
int data[MAX_SIZE]; // 存储队列中元素的数组
int front; // 队头指针
int rear; // 队尾指针
} SeqQueue;
void InitSeqQueue(SeqQueue *q) {
q->front = 0; // 初始化队头指针为0
q->rear = 0; // 初始化队尾指针为0
}
```
取队中元素:
```c
int GetFront(SeqQueue *q) {
if (q->front == q->rear) {
printf("Error: queue is empty!\n");
return -1;
}
return q->data[q->front]; // 返回队头元素
}
```
入队:
```c
void EnQueue(SeqQueue *q, int x) {
if ((q->rear + 1) % MAX_SIZE == q->front) {
printf("Error: queue is full!\n");
return;
}
q->data[q->rear] = x; // 将元素x入队
q->rear = (q->rear + 1) % MAX_SIZE; // 队尾指针加1,防止越界
}
```
出队:
```c
int DeQueue(SeqQueue *q) {
if (q->front == q->rear) {
printf("Error: queue is empty!\n");
return -1;
}
int x = q->data[q->front]; // 取出队头元素
q->front = (q->front + 1) % MAX_SIZE; // 队头指针加1,防止越界
return x;
}
```
阅读全文