~cpp #include <iostream.h> struct node{ int data; node * node_pointer; }; node * INSERT(node * head_pointer, int num); node * DELETE(node * head_pointer); int main() { //스택의 처음을 가르킨는 포인터 node * head_pointer = new node; //처음을 가르키는 포인터를 초기화 head_pointer = NULL; int num, choice; //선택모드 cout << "스택을 만들어봐요!!\n"; cout << "1.push 2.pop 3.exit\nchoice : "; cin >> choice; while(choice != 3) { switch(choice) { case 1://push cout << "push num : "; cin >> num; head_pointer = INSERT(head_pointer, num); break; case 2://pop head_pointer = DELETE(head_pointer); break; } cout << "\n스택을 만들어봐요!!\n"; cout << "1.push 2.pop 3.exit\nchoice : "; cin >> choice; } return 0; } //스택에 자료를 넣는다 node * INSERT(node * head_pointer, int num) { node * temp = new node; //처음으로 스택에 자료를 넣을때 if(head_pointer == NULL) { head_pointer = temp; head_pointer->data = num; head_pointer->node_pointer = NULL; } else { temp->node_pointer = head_pointer; head_pointer = temp; head_pointer->data = num; } return head_pointer; } //스택에서 자료를 지운다 node * DELETE(node * head_pointer) { node * temp = new node; //스택에 자료가 없을 때 if(head_pointer == NULL) cout << "no data in stack" << "\n"; else { cout << "delete num : " << head_pointer->data << "\n"; temp = head_pointer; head_pointer = head_pointer->node_pointer; delete temp; } return head_pointer; }