-
[잡담/일상] [자료구조] Stack ..뭐가 잘못됫는지 모르겟어요 ㅠㅠ2017.11.27 PM 07:14
글적는데 타이핑 시작하자마자 마이피 페이지 스크롤이 자꾸 맨위로 올랴가네요 이건 또왜이래 ㅠㅠㅠㅠ
으으.. 공부한다고 주석달아가면서 타이핑합니다..
잘못적어도 이해해주세용 플밍알못이라... 양해를;ㅅ;
컴파일땐 안잡히느데 컨트롤F5하면 에러네요..
에러내용도 이해가안되공.. ;ㅅ;
도와주세오 ;ㅅ;
---------------------
#include<stdio.h>
#include <stdlib.h>
//스텍구조 ---------------------------
//데이터가 들어오고 나가고.. 쌓이는 구조
//스텍은 top통해서만 데이터의 삽입 삭제가능
//top는 자료의 삭제,삽입이 이루어지는 스택공간의 위치를 표시하는 포인터
//구조체에서 idx를 top로 바꾸면 스텍구조가 된다.
//제일 나중에 들어온 데이터부터 나간다.
// Stack
// push : 데이터를 넣을때
// pop : 데이터를 삭제할때
//연결리스트 : 자기참조 구조체를 이용..
// 데이터의 제한이없다.
//구조체 stack 노드 선언-------------------
typedef struct node {
int no; //stack 데이터 수 값 (현재 몇개가 있는지..
int data; // stack 노드 데이터 필드
struct node *bot; //하위 노드의 위치값을 가지는 필드
}Stack;
int num = 0;
//-------------------------------------------------
void Push(Stack **dptop); //stack에 데이터 추가하는 함수
void Pop(Stack **dptop); //stack에 테이터 삭제하는함수
void ShowStack(Stack *); //stack에 테이터 출력하는 함수
int InputData(); // 데이터값 입력받는 함수
//-------------------------------------------------
int main() {
Stack *top = NULL; //위치값, NULL로 초기화
//Push 함수호출 : top의 주소값을 넘겨준다.
Push(&top);
Push(&top);
Push(&top);
//데이터 출력함수, : top의값을 넘겨준다.
ShowStack(top);
// pop함수 호출 : top의 주소값을 넘겨준다.
Pop(&top);
}
//-------------------------------------------------
void Pop(Stack **dptop) {
//stack에 데이터가 없으면 종료
if (*dptop == NULL) {
puts("스텍이 비어있습니다");
return;
}
//노드삭제 후 top은 마지막 노드의 위치를 가리켜야 하므로
//삭제노드의 Bot필드의 값을 임시변수에 보관한다.
Stack *tmp = (*dptop)->bot;
// 노드의 개수를 표현하는 num값 1감소
--num;
// 노드삭제
free(*dptop);
//top 현재의 마지막노드의 위치값을 넣어준다.
*dptop = tmp;
}
void ShowStack(Stack *current) {
//stack에 데이터가 없으면 종료
if (current == NULL) {
puts("스텍이 비어있습니다");
return;
}
//반복문 실행해서 노드 이동하면서 노드의 테이터 출력
while (1) {
//현재노드의 데이터 출력
puts("지금 쌓인 데이터는");
//하위노드로 이동
}
}
//-------------------
void Push(Stack **dptop) {
// 노드 추가시 새노드의 bot필드의 하위노드의 위치값을 넣어주어야한다
// main의 top이 가진값이 하위노드의 위치값이므로..
// main의 top의 값을 임시변수(tmp)에 보관한다.
Stack *tmp = *dptop;
// 새노드 생성하고 새노드의 위치값을 top에게 넣어준다.
*dptop = (Stack*)malloc(sizeof(Stack));
// 새노드의 no필드에 num값을 1증가해서 넣어준다.
(*dptop)->no = ++num;
// 새노드의 데이터 필드에 데이터 입력
(*dptop)->data = InputData();
// 새노드의 bot필드에 하위노드의 위치값을 넣어줌
(*dptop)->bot = tmp;
}
- 숲바라기
- 2017/11/27 PM 07:28
- 비싸기만함
- 2017/11/27 PM 07:56
user error : Error. B.