用C語言給出棧的定義和九種基本操作
时间: 2024-05-08 09:15:49 浏览: 20
棧(stack)是一種特殊的線性數據結構,它只能在一端(稱為棧頂)進行插入和刪除操作。這個一端進出的特點使得棧具有後進先出(LIFO)的特性。
棧的定義:
```c
#define MAXSIZE 100 // 棧的最大容量
typedef struct stack {
int data[MAXSIZE]; // 數據域
int top; // 棧頂指針
} Stack;
```
棧的基本操作:
1. 初始化棧:
```c
void InitStack(Stack *s) {
s->top = -1;
}
```
2. 判空操作:
```c
bool IsEmpty(Stack *s) {
return s->top == -1;
}
```
3. 判滿操作:
```c
bool IsFull(Stack *s) {
return s->top == MAXSIZE - 1;
}
```
4. 入棧操作:
```c
bool Push(Stack *s, int x) {
if (IsFull(s)) {
return false; // 棧滿,入棧失敗
} else {
s->top++;
s->data[s->top] = x;
return true; // 入棧成功
}
}
```
5. 出棧操作:
```c
bool Pop(Stack *s, int *x) {
if (IsEmpty(s)) {
return false; // 棧空,出棧失敗
} else {
*x = s->data[s->top];
s->top--;
return true; // 出棧成功
}
}
```
6. 取棧頂元素:
```c
bool GetTop(Stack *s, int *x) {
if (IsEmpty(s)) {
return false; // 棧空,取棧頂元素失敗
} else {
*x = s->data[s->top];
return true; // 取棧頂元素成功
}
}
```
7. 清空棧:
```c
void ClearStack(Stack *s) {
s->top = -1;
}
```
8. 棧的長度:
```c
int StackLength(Stack *s) {
return s->top + 1;
}
```
9. 遍歷棧:
```c
void TraverseStack(Stack *s) {
if (IsEmpty(s)) {
printf("Stack is empty.\n");
} else {
printf("Stack elements:\n");
for (int i = s->top; i >= 0; i--) {
printf("%d\n", s->data[i]);
}
}
}
```
相关推荐
![text/x-c++](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)