最后在C中实现了我的堆栈链表,但是有没有比我更简单的方法?

时间:2018-06-17 14:41:58

标签: c data-structures linked-list stack

我终于构建了我的堆栈链表。它工作正常。 但我想知道是否有比我更容易和更短的方式。

我觉得......我不是实现堆栈链表的最好方法。

最好的方式:轻松简短。

我的整个代码在下面..

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

typedef int element;
typedef struct node{
  element data;
  struct node* next;
}node;
node* head = NULL;

void push(element data){
  node* temp = (node*)malloc(sizeof(node));
  if(temp==NULL)
    printf("out of memory");
  else{
    temp->data = data;
    temp->next = head;
    printf("push(%d)\n", temp->data);
    head = temp;
  }
}

void pop(){
  node* temp;
  if(head==NULL) return;
    temp = head;
    head = temp->next;
    free(temp);
}

void printStack(){
  node* temp = head;
  while(temp!=NULL){
    printf("%d\n", temp->data);
    temp = temp->next;
  }
}

void is_Empty(){
  if(head==NULL){
    printf("EMPTY\n");
  }
  else{
    printf("NOT EMPTY\n");
  }
}
void main() {
  push(10);
  push(20);
  push(30);
  push(40);
  printStack();
  is_Empty();
}

1 个答案:

答案 0 :(得分:2)

看起来不错,但通常在弹出时,您想要返回删除的元素。此外,我将有一个释放堆栈的函数,这样如果你想创建一个抽象级别,人们仍然可以正确地管理它们的内存。