【发布时间】:2016-02-03 16:29:40
【问题描述】:
我正在尝试实现一个包含 char 类型链接列表的堆栈。当我尝试返回在顶部节点中找到的值时,它给了我上面的错误。
代码:
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
#include "header4AB.h"
typedef struct {
struct node_t * top;
int max_size;
int used_size;
} Stack;
typedef struct node {
int val;
struct node * next;
}node_t;
Stack * stack(int max_size) {
Stack * S = malloc(sizeof(Stack));
S->top = NULL;
S->max_size = max_size;
S->used_size = 0;
return S;
}
bool push(Stack * S, char p) {
if (S->used_size != S->max_size) {
node_t * temp = malloc(sizeof(node_t));
temp->val = p;
temp->next = S->top;
S->top = temp;
S->used_size++;
return true;
}
return false;
}
bool pop(Stack * S) {
node_t * temp;
if (S->top == NULL)
return false;
temp = S->top;
S->top = temp->next;
free(temp);
return true;
}
char top(Stack * S) {
if (S->top != NULL) {
return S->top->val; //error here
}
}
我对固定大小堆栈中的链接列表的概念非常陌生,而且我还没有测试我的代码,所以我不知道它是否有效。任何帮助表示赞赏!
【问题讨论】:
-
您必须在
Stack之前定义node_t,并且使用struct node或node_t而不是struct node_t。 -
这真的是你的编译器所说的吗? C 中没有类。
-
@n.m.我猜真正的错误是:错误:取消引用指向不完整类型的指针
-
@n.m 我引用了编译器的错误(Visual Studio Enterprise 2015)......但是 LP 的回答解决了它。
-
您可能需要启用并阅读compiler warnings。
标签: c++ linked-list char visual-studio-2015 stack