我已经实现了一个带有指针的堆栈,它也像它假设的那样工作。现在,我需要它推送到堆栈,而不是推送副本。例如,如果我将“2”压入堆栈,再压入另一个“2”仍然会导致堆栈中只有一个“2”,因为它已经存在。
下面是我如何尝试创建新的推送功能。我知道我想遍历堆栈并检查我要添加的元素,但我想我做错了吗?谁能帮我吗?
typedef struct Node {
void *content;
struct Node *next;
} Node;
typedef struct Stack {
Node *head;
int count;
} Stack;
void push(Stack *stack, void *newElem) {
Node *newNode = (Node*) malloc(sizeof(Node));
if (stack->count > 0) {
int i;
for (i = 0, newNode = stack->head; i < stack->count; i++, newNode =
newNode->next) {
if (newNode->content == newElem) return;
}
} else {
newNode->next = stack->head;
newNode->content = newElem;
stack->head = newNode;
stack->count++;
}
}