10828:スタック
質問する
コード#コード# #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TRUE 1
#define FALSE 0
#define STACK_LEN 10000
typedef int Data;
typedef struct stack{
Data stackArr[STACK_LEN];
int topIndex;
}Stack;
void stackInit(Stack * pstack); // init
int SIsEmpty(Stack * pstack); // empty
void SPush(Stack * pstack, Data data); //push
Data SPop(Stack * pstack); // pop
Data SSize(Stack * pstack);
Data SPeek(Stack * pstack); //top
int main(void)
{
int num;
char str[6];
int newNum;
//스택생성,초기화
Stack stack;
stackInit(&stack);
scanf("%d",&num);
for(int i=0;i<num;i++)
{
scanf("%s",str);
if(!strcmp(str, "push"))//같으면 0출력
{
scanf("%d",&newNum);
SPush(&stack, newNum);
}
else if(!strcmp(str, "pop"))
{
printf("%d\n",SPop(&stack));
}
else if(!strcmp(str, "size"))
{
printf("%d\n",SSize(&stack));
}
else if(!strcmp(str, "empty"))
{
printf("%d\n",SIsEmpty(&stack));
}
else if(!strcmp(str, "top"))
{
printf("%d\n",SPeek(&stack));
}
}
return 0;
}
void stackInit(Stack * pstack)
{
pstack->topIndex = -1; //빈상태
}
int SIsEmpty(Stack * pstack)
{
if(pstack->topIndex == -1) //빔
return TRUE;
else
return FALSE;
}
void SPush(Stack * pstack, Data data)
{
pstack->stackArr[++(pstack->topIndex)] = data; // 데이터 저장
}
Data SSize(Stack * pstack)
{
return pstack->topIndex+1;
}
Data SPop(Stack * pstack)
{
// int rIdx;
if(SIsEmpty(pstack))
{
return -1;
}
// rIdx = pstack->topIndex; //삭제할 데이터 저장
// pstack->topIndex -= 1;
// return pstack->stackArr[rIdx]; // 삭제되는 값 반환
return pstack->stackArr[(pstack->topIndex)--]; // 한줄코딩
}
Data SPeek(Stack * pstack)
{
if(SIsEmpty(pstack))
{
return -1;
}
return pstack->stackArr[pstack->topIndex]; // 맨위 저장된 값 반환
}
解説
スタックのコンセプトの問題だけ...!
Init、push、pop、peek、size、空の関数を実現すればよい.
質問に答えた後、他の人のコードを見て、シフクがうらやましくて、、、
あ、言ってください.
他人コードのPOP部分を見て、ちょっとショック
まさにData SPop(Stack * pstack)
{
// int rIdx;
if(SIsEmpty(pstack))
{
return -1;
}
// rIdx = pstack->topIndex; //삭제할 데이터 저장
// pstack->topIndex -= 1;
// return pstack->stackArr[rIdx]; // 삭제되는 값 반환
return pstack->stackArr[(pstack->topIndex)--]; // 한줄코딩
}
return pstack->stackArr[(pstack->topIndex)--];//ロベルトのリターンでrIdxを単独で発表する必要はないから!
これで番組の効率もアップして、大発進!!
いずれにしても、今から正式なアルゴリズムを始めます>?資料構造開始...!
Reference
この問題について(10828:スタック), 我々は、より多くの情報をここで見つけました
https://velog.io/@seochan99/10828-스택
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TRUE 1
#define FALSE 0
#define STACK_LEN 10000
typedef int Data;
typedef struct stack{
Data stackArr[STACK_LEN];
int topIndex;
}Stack;
void stackInit(Stack * pstack); // init
int SIsEmpty(Stack * pstack); // empty
void SPush(Stack * pstack, Data data); //push
Data SPop(Stack * pstack); // pop
Data SSize(Stack * pstack);
Data SPeek(Stack * pstack); //top
int main(void)
{
int num;
char str[6];
int newNum;
//스택생성,초기화
Stack stack;
stackInit(&stack);
scanf("%d",&num);
for(int i=0;i<num;i++)
{
scanf("%s",str);
if(!strcmp(str, "push"))//같으면 0출력
{
scanf("%d",&newNum);
SPush(&stack, newNum);
}
else if(!strcmp(str, "pop"))
{
printf("%d\n",SPop(&stack));
}
else if(!strcmp(str, "size"))
{
printf("%d\n",SSize(&stack));
}
else if(!strcmp(str, "empty"))
{
printf("%d\n",SIsEmpty(&stack));
}
else if(!strcmp(str, "top"))
{
printf("%d\n",SPeek(&stack));
}
}
return 0;
}
void stackInit(Stack * pstack)
{
pstack->topIndex = -1; //빈상태
}
int SIsEmpty(Stack * pstack)
{
if(pstack->topIndex == -1) //빔
return TRUE;
else
return FALSE;
}
void SPush(Stack * pstack, Data data)
{
pstack->stackArr[++(pstack->topIndex)] = data; // 데이터 저장
}
Data SSize(Stack * pstack)
{
return pstack->topIndex+1;
}
Data SPop(Stack * pstack)
{
// int rIdx;
if(SIsEmpty(pstack))
{
return -1;
}
// rIdx = pstack->topIndex; //삭제할 데이터 저장
// pstack->topIndex -= 1;
// return pstack->stackArr[rIdx]; // 삭제되는 값 반환
return pstack->stackArr[(pstack->topIndex)--]; // 한줄코딩
}
Data SPeek(Stack * pstack)
{
if(SIsEmpty(pstack))
{
return -1;
}
return pstack->stackArr[pstack->topIndex]; // 맨위 저장된 값 반환
}
解説
スタックのコンセプトの問題だけ...!
Init、push、pop、peek、size、空の関数を実現すればよい.
質問に答えた後、他の人のコードを見て、シフクがうらやましくて、、、
あ、言ってください.
他人コードのPOP部分を見て、ちょっとショック
まさにData SPop(Stack * pstack)
{
// int rIdx;
if(SIsEmpty(pstack))
{
return -1;
}
// rIdx = pstack->topIndex; //삭제할 데이터 저장
// pstack->topIndex -= 1;
// return pstack->stackArr[rIdx]; // 삭제되는 값 반환
return pstack->stackArr[(pstack->topIndex)--]; // 한줄코딩
}
return pstack->stackArr[(pstack->topIndex)--];//ロベルトのリターンでrIdxを単独で発表する必要はないから!
これで番組の効率もアップして、大発進!!
いずれにしても、今から正式なアルゴリズムを始めます>?資料構造開始...!
Reference
この問題について(10828:スタック), 我々は、より多くの情報をここで見つけました
https://velog.io/@seochan99/10828-스택
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Data SPop(Stack * pstack)
{
// int rIdx;
if(SIsEmpty(pstack))
{
return -1;
}
// rIdx = pstack->topIndex; //삭제할 데이터 저장
// pstack->topIndex -= 1;
// return pstack->stackArr[rIdx]; // 삭제되는 값 반환
return pstack->stackArr[(pstack->topIndex)--]; // 한줄코딩
}
Reference
この問題について(10828:スタック), 我々は、より多くの情報をここで見つけました https://velog.io/@seochan99/10828-스택テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol