如何在 C 编程中使用链表将堆栈链接到其他堆栈?



我用链表制作了自己的堆栈。但我认为这是错误的。 我的推送方法是将 Stack1 链接到其他堆栈。 所以,我认为这就像...

In my main function,
push(stack1, 10);
push(stack1, 20);
[Stack1] -> [nextStack]
[Stack1] -> [nextStack] (new address from first nextStack)

所以,这就像...我一次又一次地重复将堆栈 1 链接到其他堆栈......

这是我使用下面的链表代码的堆栈。

#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 %dn", 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
#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初始化堆栈指针。这可能会在程序运行期间提供未定义的行为。

相关内容

  • 没有找到相关文章

最新更新