我創建一個使用基本堆疊在C.在該程序我在標題中定義的兩種結構:C數據結構錯誤
- 的結構命名節點與一個字符串和一個指針到以前的節點作爲成員。
一個名爲Stack的結構,其中有一個指向最後一個節點的指針作爲成員。
下面是這些結構的定義,在我的頭文件:
#include <stdio.h> #include <stdlib.h> typedef struct Node { const char* string; struct Node *prev; }; typedef struct Stack { size_t sizeOfStack; size_t sizeOfElem; struct Node *last; };
一種方法給我的錯誤是創建堆棧():
創建堆棧:該函數創建一個堆(相當於一個構造函數)。
(A)名稱:創建堆棧
(B)返回類型:一個指針,指向在堆上分配一個堆棧。
這是我實現
Stack* CreateStack() {
Stack* stack = malloc(sizeof(*stack));
if (stack == NULL) {
return NULL;
}//end of if
stack->sizeOfElem = 0;
stack->sizeOfStack = 0;
stack->last = NULL;
return stack;
}//end of CreateStack
但是編譯器吐出了這一點:
錯誤:「堆棧{又名結構棧}」沒有名爲成員「最後」 重新建立了新>末頁=節點;
錯誤:'Stack {aka struct Stack}'沒有名爲'last'的成員 node-> prev = stack-> last;
錯誤:'Stack {aka struct Stack}'沒有名爲'last'的成員 Node * node = stack-> last;
如果有人能指出這個問題,我將不勝感激。我很困惑,爲什麼它說最後一件事不是一件事,但在另一件結構中以相同的方式定義的前提並沒有引起注意。謝謝。
你的編譯器錯誤不是你展示的代碼。你的typedefs不完整。 – aschepler
「尋求調試幫助的問題(」爲什麼這個代碼不工作?「)必須包含所需的行爲,特定的問題或錯誤以及在問題本身中重現問題所需的最短代碼。對其他讀者很有用,參見:[**如何創建一個最小,完整和可驗證的示例**](http://stackoverflow.com/help/mcve)。「 –
@aschepler是的,它是冗長的代碼,所以,因爲這個錯誤似乎並不是特定於使用這些結構的方法,所以我認爲錯誤在結構中。我自己提供了結構。所有的錯誤都將「last」引用爲不存在。 –