通过控制合scanf两数将士、2、3、4、5进顺序栈。 然后出顺序栈并将出栈元素入链栈,直到顺序栈为空,获得链栈栈顶元素并输出,打印链栈内的所有元素;
时间: 2023-12-20 21:03:17 浏览: 23
好的,我理解了你的问题。这是一个关于栈和链栈的操作问题。
首先,我们需要定义一个顺序栈和一个链栈。顺序栈可以使用数组实现,链栈可以使用单链表实现。
下面是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 50 // 定义顺序栈的最大容量
typedef struct {
int data[MAXSIZE];
int top; // 栈顶指针
} SqStack;
typedef struct LNode {
int data;
struct LNode *next;
} LNode, *LinkStack;
void InitStack(SqStack *S) {
S->top = -1;
}
int Push(SqStack *S, int x) {
if (S->top == MAXSIZE - 1) {
return 0; // 栈满
}
S->data[++S->top] = x;
return 1; // 成功入栈
}
int Pop(SqStack *S, int *x) {
if (S->top == -1) {
return 0; // 栈空
}
*x = S->data[S->top--];
return 1; // 成功出栈
}
void InitLinkStack(LinkStack *S) {
*S = NULL;
}
int PushLink(LinkStack *S, int x) {
LNode *p = (LNode *)malloc(sizeof(LNode));
if (p == NULL) {
return 0;
}
p->data = x;
p->next = *S;
*S = p;
return 1;
}
int PopLink(LinkStack *S, int *x) {
if (*S == NULL) {
return 0;
}
LNode *p = *S;
*x = p->data;
*S = p->next;
free(p);
return 1;
}
int main() {
SqStack S;
LinkStack L;
int x;
// 将 1, 2, 3, 4, 5 入栈
InitStack(&S);
Push(&S, 1);
Push(&S, 2);
Push(&S, 3);
Push(&S, 4);
Push(&S, 5);
// 出栈并入链栈
InitLinkStack(&L);
while (Pop(&S, &x)) {
PushLink(&L, x);
}
// 输出链栈栈顶元素
if (PopLink(&L, &x)) {
printf("链栈栈顶元素为 %d\n", x);
} else {
printf("链栈为空\n");
}
// 打印链栈内的所有元素
printf("链栈内的所有元素为: ");
while (PopLink(&L, &x)) {
printf("%d ", x);
}
printf("\n");
return 0;
}
```
希望这个例子能够帮助你理解如何实现这个问题。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](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)