2024年第一道,简单题开篇
【模板】栈
https://www.nowcoder.com/practice/104ce248c2f04cfb986b92d0548cccbf
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct node{
int data;
struct node* next;
}node;
typedef struct stack{
struct node* root;
}stack;
void init_stack(stack* s){
s->root = (node*)malloc(sizeof(node));
s->root->next= NULL;
}
void push(stack* s,int data){
node* newnode = (node*)malloc(sizeof(node));
newnode->data = data;
newnode->next = s->root->next;
s->root->next=newnode;
}
void pop(stack*s){
if(s->root->next == NULL){
printf("error\n");
} else {
node* first = s->root->next;
printf("%d\n",first->data);
s->root->next = first->next;
free(first);
}
}
void top(stack*s){
if(s->root->next == NULL){
printf("error\n");
} else {
node* first = s->root->next;
printf("%d\n",first->data);
}
}
int main() {
int n,d;
stack s;
init_stack(&s);
while (scanf("%d", &n) != EOF) {
for(int i=0;i<n;i++){
char a[5];
scanf("%s",a);
if (strcmp(a,"push") == 0){
scanf("%d",&d);
push(&s, d);
} else if(strcmp(a,"pop") == 0){
pop(&s);
} else if(strcmp(a,"top") == 0){
top(&s);
}
}
}
return 0;
}
