Как связать стеки с другими стеками, используя Linked List в C-программировании? - PullRequest
0 голосов
/ 10 июня 2018

Я создал свой стек, используя связанный список.Но я думаю, что это неправильно.мой метод push связывает Stack1 с другими стеками.Итак, я думаю, что это похоже на ...

In my main function,

push(stack1, 10);
push(stack1, 20);

[Stack1] -> [nextStack]
[Stack1] -> [nextStack] (new address from first nextStack)

Итак, это как ... Я повторяю снова и снова связывать stack1 с другими стеками ...

это мойстек, используя приведенный ниже код списка.

#include <stdio.h>
#include <stdlib.h>

typedef struct{
    int data;
   struct stack *top;
}stack;

void push(stack *currentStack, int data){

    if (currentStack->top == NULL)
        fprintf(stderr, "Stack is emtpy");

    else{
        stack *nextStack = (stack*)malloc(sizeof(stack));
        currentStack->data = data;
        currentStack->top = nextStack;

        printf("currentStack is %d\n", currentStack->data);
    }
}

int main(){

    stack* stack1;
    stack1 = (stack*)malloc(sizeof(stack));

    push(stack1, 10);
    push(stack1, 20);

    return 1;
}

, и это результат моего кода.

currentStack is 10
currentStack is 20

1 Ответ

0 голосов
/ 16 июня 2018
#include <stdio.h>
#include <stdlib.h>

struct stack
{
    int data;
    struct stack *top;
}  *head = NULL;


void push(int data)
{
    if (head == NULL)   //that means stack is empty
    {
        head =(struct node *)malloc(1*sizeof(struct node));
        head->top = NULL;
        head->data = data;
    }
    else
    {
        temp =(struct node *)malloc(1*sizeof(struct node));
        temp->top = head;
        temp->data = data;
        head = temp;
    }

}

Ваша функция push () не завершена.Следует рассмотреть два случая: один, когда стек пуст, и другой, когда его нет.

Также нет необходимости передавать указатель на стек в push () функция, потому что функция push () по умолчанию помещает новый элемент в самый верхний узел и остается только один стек.

Также вы не инициализировали указатель стека с помощью NULL .Это может привести к неопределенному поведению во время выполнения программы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...