C,能过样例,但0分
查看原帖
C,能过样例,但0分
966476
ABtianCD楼主2023/6/19 16:31
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct stack{
	unsigned long long int data;
	struct stack* next;
}stack; 

stack* initstack(){
	stack* s=(stack*)malloc(sizeof(stack));
	s->data=0;
	s->next=NULL;
	return s;
}

void push(unsigned long long int x,stack* s){
	//入栈 队尾入栈 
	stack* s1=initstack();
	stack* head=s;
	int i=0;
	for(;i<head->data;i++)
		s=s->next;
	s1->data=x;
	head->data++;
	s->next=s1;
	s1->next=NULL;
	s=head;
} 

void pop(stack* s){
	//出栈 队尾出栈 
	if(s->data==0){
		printf("Empty\n");
		return ;
	}s->data--;
	int i=0,j=s->data;
	for(;i<j-1;i++)
		s=s->next;
	s->next->data=0;
	s->next=NULL;
} 

void query(stack* s){
	if(s->data!=0)
	printf("%llu\n",s->next->data);
	else printf("Auguei!\n");
}

void size(stack* s){
	printf("%d\n",s->data);
}

void clean(stack* s){
	stack* h=s;
	while(s->next!=NULL){
		s->data=0;
	}s->data=0;
	h->next=NULL;
	h->data=0;
	s=h;
}

int main(){
	int t=0,n=0,i=0,j=0;
	unsigned long long int m=0;
	char a[6];
	stack* s=initstack();
	scanf("%d",&t);
	for(i=0;i<t;i++){
		scanf("%d",&n);
		for(j=0;j<n;j++){
			scanf("%s",a);
			if(!strcmp(a,"push")){
				scanf("%llu",&m);
				push(m,s);
			}else if(!strcmp(a,"pop"))
			pop(s);
			else if(!strcmp(a,"query"))
			query(s);
			else size(s);
		}clean(s);
	}free(s);
	return 0;	
}

链表栈,已清空,已ull

2023/6/19 16:31
加载中...