根据输入的栈中元素个数n和各元素值建立一个顺序栈和链栈,并输出栈中各元素值。
时间: 2024-06-13 07:07:21 浏览: 84
根据提供的引用内容,我们可以为您提供以下代码来建立一个顺序栈和链栈,并输出栈中各元素值:
1. 建立顺序栈
```c
#define MAXSIZE 100 // 定义栈的最大长度
typedef struct {
int data[MAXSIZE]; // 存放栈中元素
int top; // 栈顶指针
} SqStack;
// 初始化栈
void InitStack(SqStack &S) {
S.top = -1;
}
// 进栈操作
bool StackPush(SqStack &S, int x) {
if (S.top == MAXSIZE - 1) {
return false; // 栈满,无法进栈
}
S.top++;
S.data[S.top] = x;
return true;
}
// 遍历输出栈中元素
void TraverseStack(SqStack S) {
while (S.top != -1) {
printf("%d ", S.data[S.top]);
S.top--;
}
printf("\n");
}
// 创建顺序栈
void CreateStack(SqStack &S, int n) {
int x;
for (int i = 0; i < n; i++) {
printf("请输入第%d个元素:", i + 1);
scanf("%d", &x);
StackPush(S, x);
}
}
```
2. 建立链栈
```c
typedef struct LNode {
int data;
struct LNode *next;
} LNode, *LinkStack;
// 初始化链栈
void InitStack(LinkStack &S) {
S = NULL;
}
// 进栈操作
bool StackPush(LinkStack &S, int x) {
LNode *p = new LNode;
p->data = x;
p->next = S;
S = p;
return true;
}
// 遍历输出栈中元素
void TraverseStack(LinkStack S) {
while (S != NULL) {
printf("%d ", S->data);
S = S->next;
}
printf("\n");
}
// 创建链栈
void CreateStack(LinkStack &S, int n) {
int x;
for (int i = 0; i < n; i++) {
printf("请输入第%d个元素:", i + 1);
scanf("%d", &x);
StackPush(S, x);
}
}
```
使用方法:
```c
int main() {
SqStack S1;
LinkStack S2;
int n;
printf("请输入要建立栈的元素个数:");
scanf("%d", &n);
printf("建立顺序栈:\n");
InitStack(S1);
CreateStack(S1, n);
printf("顺序栈中元素为:");
TraverseStack(S1);
printf("建立链栈:\n");
InitStack(S2);
CreateStack(S2, n);
printf("链栈中元素为:");
TraverseStack(S2);
return 0;
}
```
阅读全文