ポインターを使用してスタックを実装しましたが、これも想定どおりに機能します。ここで、重複をプッシュせずに、スタックにプッシュする必要があります。たとえば、'2' をスタックにプッシュすると、別の '2' をプッシュしても、スタックには '2' が既に存在するため、'2' は 1 つだけになります。
以下は、新しいプッシュ関数を作成しようとした方法です。スタックをトラバースして、追加する要素をチェックすることになっていることはわかっていますが、それは間違っていると思いますか? 誰でも私を助けることができますか?
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++;
}
}