티스토리 뷰
반응형
1. LinkedListStack.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | //링크드리스트 스택 구현을 위한 함수 선언// #ifndef LINKEDLIST_STACK_H #define LINKEDLIST_STACK_H #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct tagNode{ char* Data; struct tagNode* NextNode; }Node; typedef struct tagLinkedListStack{ Node* List; Node* Top; }LinkedListStack; void LLS_CreateStack(LinkedListStack** Stack); void LLS_DestroyStack(LinkedListStack* Stack); Node* LLS_CreateNode(char* Data); void LLS_DestroyNode(Node* _Node); void LLS_Push(LinkedListStack* Stack,Node* NewNode); Node* LLS_Pop(LinkedListStack* Stack); Node* LLS_Top(LinkedListStack* Stack); int LLS_GetSize(LinkedListStack* Stack); int LLS_IsEmpty(LinkedListStack* Stack); #endif | cs |
2. LinkedListStack.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | //링크드리스트 스택 구현을 위한 함수 구현// #include "LinkedListStack.h" void LLS_CreateStack(LinkedListStack** Stack){ (*Stack)=(LinkedListStack*)malloc(sizeof(LinkedListStack)); (*Stack)->List=NULL; (*Stack)->Top=NULL; } void LLS_DestroyStack(LinkedListStack* Stack){ while(!LLS_IsEmpty(Stack)){ Node* Popped=LLS_Pop(Stack); LLS_DestroyNode(Popped); } free(Stack); } Node* LLS_CreateNode(char* NewData){ Node* NewNode=(Node*)malloc(sizeof(Node)); NewNode->Data=(char*)malloc(strlen(NewData)+1); strcpy(NewNode->Data,NewData); NewNode->NextNode=NULL; return NewNode; } void LLS_DestroyNode(Node* _Node){ free(_Node->Data); free(_Node); } void LLS_Push(LinkedListStack* Stack,Node* NewNode){ if(Stack->List==NULL){ Stack->List=NewNode; } else{ Node* OldTop=Stack->List; while(OldTop->NextNode!=NULL){ OldTop=OldTop->NextNode; } OldTop->NextNode=NewNode; } Stack->Top=NewNode; } Node* LLS_Pop(LinkedListStack* Stack){ Node* TopNode=Stack->Top; if(Stack->List==Stack->Top){ Stack->List=NULL; Stack->Top=NULL; } else{ Node* CurrentTop=Stack->List; while(CurrentTop->NextNode!=TopNode && CurrentTop!=NULL){ CurrentTop=CurrentTop->NextNode; } Stack->Top=CurrentTop; CurrentTop->NextNode=NULL; } return TopNode; } Node* LLS_Top(LinkedListStack* Stack){ return Stack->Top; } int LLS_GetSize(LinkedListStack* Stack){ int Count=0; Node* Current=Stack->List; while(Current!=NULL){ Current=Current->NextNode; Count++; } return Count; } int LLS_IsEmpty(LinkedListStack* Stack){ return (Stack->List==NULL); } | cs |
3. Test_LinkedListStack.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | //링크드리스트 스택 함수 테스트// #include "LinkedListStack.h" int main(){ int i=0; int Count=0; Node* Popped; LinkedListStack* Stack; LLS_CreateStack(&Stack); LLS_Push(Stack,LLS_CreateNode("abc")); LLS_Push(Stack,LLS_CreateNode("def")); LLS_Push(Stack,LLS_CreateNode("efg")); LLS_Push(Stack,LLS_CreateNode("hij")); Count=LLS_GetSize(Stack); printf("Size : %d, Top : %s\n\n",Count,LLS_Top(Stack)->Data); for(i=0;i<Count;i++){ if(LLS_IsEmpty(Stack)){ break; } Popped=LLS_Pop(Stack); printf("Popped : %s, ",Popped->Data); LLS_DestroyNode(Popped); if(!LLS_IsEmpty(Stack)) printf("Current Top : %s\n",LLS_Top(Stack)->Data); else printf("Stack is Empty\n"); } LLS_DestroyStack(Stack); return 0; } | cs |
실행 결과
반응형
'개인 서재..* > 알고리즘' 카테고리의 다른 글
[C언어] 일반 트리 구조 (0) | 2017.04.23 |
---|---|
[C언어] 링크드 큐 (0) | 2017.04.23 |
[C언어] 스택(feat.배열) (0) | 2017.04.14 |
[C언어] Circular Doubly Linked List (0) | 2017.04.14 |
[C언어] Doubly Linked List (0) | 2017.04.14 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 타르코프 스파 투어
- 스텐팬 세척
- 제습기 후기
- 스파투어 파트4
- 스텐팬 갈색
- 친구들호캉스
- 스텐팬 탄 자국
- 혐오광고 제거
- 자취요리
- 겨드랑이 초음파
- 스파 파트 4
- 건강검진 겨드랑이
- 피지낭종 수술후기
- 스파관광 파트4
- 아난티앳강남
- 제습기 내돈내산
- 겨드랑이 혹
- 구글애드센스 광고차단
- 싱크대 단수
- 겨드랑이 지방종
- 물이 안나와요
- 구글애드센스 혐오광고
- 사마귀광고 제거
- 스텐팬 갈변
- 휘센 제습기
- 겨드랑이 멍울
- 피지낭종 후기
- 급수에러
- 피지낭종 제거수술
- 타르코프 스파 관광
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
글 보관함