【发布时间】:2021-03-21 08:16:30
【问题描述】:
我试图进入结构,但我被卡住了。这里我尝试实现栈的主要功能:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#define N 10
struct docEdit
{
char text[20];
int StrNum;
};
struct Stack {
struct docEdit items[N];
int top;
};
void pushstack(struct Stack* st, struct docEdit myEvent1) {
if (st->top == N - 1) {
printf("Stack is full");
return;
}
st->items[st->top++] = myEvent1;
}
void popstack(struct Stack* st) {
if (st->top == -1) {
printf("Stack is empty");
return;
}
st->top--;
}
int emptystack(struct Stack* st) {
return st->top = 0;
}
int sizestack(struct Stack* st) {
return st->top;
}
(//function data type//) top(struct Stack* st) {
return st->items[st->top];
}
int main() {
setlocale(LC_ALL, "");
struct Stack st;
st.top = -1;
struct docEdit myEvent1 = {"string 1", 1};
pushstack(&st, myEvent1);
popstack(&st);
return 0;
}
有两个问题:为什么写st变量没有初始化,top函数应该有什么数据类型?如果您指出我的错误和不准确之处,我也将非常感激。
【问题讨论】:
-
@adislaus01231 “为什么它写的是 st 变量没有初始化” - 你写了代码,你问我们为什么这样写?!
-
堆栈包含
struct docEdits,所以它应该返回一个struct docEdit。根据您计划使用堆栈的方式,返回struct docEdit *是一个很好的例子。请记住在完成参考之前不要弹出它。 -
您可以在创建每个结构之前编写 typdef,使用 typedef 可以让您编写 docEdit/Stack 而不必一直编写 struct docEdit/Stack。这不是必需的,这只是一种方便。你不需要使用 typedef 来让你的代码工作。如果您愿意,您可以继续在任何地方编写 struct docEdit 和 structStack
-
请正确缩进您的代码。这是一种很好的风格,而且它使其他人更容易阅读。
标签: c data-structures struct stack function-definition