题解 | #【模板】栈#

【模板】栈

https://www.nowcoder.com/practice/104ce248c2f04cfb986b92d0548cccbf

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//链表头插法模拟栈,头结点为空
typedef struct stack{
    int data;
    struct stack *next;
} stack;

void n_push(stack* tmp,int data){
        stack* nxt=malloc(sizeof(stack));
        nxt->data=data;
        nxt->next=tmp->next;
        tmp->next=nxt;
}   
int n_pop(stack* tmp){
    if (tmp->next==NULL) {
        printf("error\n");
        return -1;
    }else {
        printf("%d\n",tmp->next->data);
        stack* nxt=tmp->next;
        tmp->next=nxt->next;
        free(nxt);
        nxt=NULL;//free后置空,否则非法访问有概率读到旧数据。
        return 0;
    }
}
int n_top(stack* tmp){
    if (tmp->next==NULL){
        printf("error\n");
        return -1;
    }else {
        printf("%d\n",tmp->next->data);
        return 0;
    }
}

int main(void){
  int num=0;  
  stack * head=NULL;//千万记得初始化
  head=malloc(sizeof(stack));
  head->next=NULL;
  scanf("%d",&num);
  while(num--){
    char str[8];
    scanf("%s ",str);
    if (str[1]=='u'){
      int data=0;
      scanf("%d",&data);
      n_push(head, data);
    }else if (str[0]=='p') {
        n_pop(head);
    
    }else if (str[0]=='t') {
        n_top(head);
    
    }
  }
}

全部评论

相关推荐

04-17 18:32
门头沟学院 Java
野猪不是猪🐗:他跟你一个学校,你要是进来之后待遇比他好,他受得了?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务