チェーンスタックの初期化インスタックアウトスタック印刷スタックの要素などの基礎内容

20966 ワード

    XCode  C++,CLion     ,            ,     XCode
:XCode Version 8.3.3 
1
#include 2 using namespace std; 3 4 #define maxSize 1000 5 #define WWStr(str) #str 6 #define WWLine "-------------" 7 8 9 /** 10 11 */ 12 typedef struct LinkStackNode{ 13 LinkStackNode *next; 14 int data; 15 }LinkStackNode; 16 17 /* */ 18 void linkStackOperation(); 19 /* */ 20 void initLinkStack(LinkStackNode *&linkStack); 21 /* */ 22 int isEmptyLinkStack(LinkStackNode *linkStack); 23 /* */ 24 int pushLinkStack(LinkStackNode *linkStack,int x); 25 /* */ 26 int popLinkStack(LinkStackNode *linkStack,int &x); 27 28 /* */ 29 void printLinkStack(LinkStackNode *linkStack); 30 31 /* */ 32 void notice(); 33 34 int main(int argc, const char * argv[]) { 35 36 // 37 linkStackOperation(); 38 39 return 0; 40 } 41 42 43 #pragma mark - 44 void linkStackOperation(){ 45 46 cout<" "<endl; 47 LinkStackNode *linkStack; 48 initLinkStack(linkStack); 49 50 pushLinkStack(linkStack,1); 51 pushLinkStack(linkStack,2); 52 pushLinkStack(linkStack,3); 53 54 printLinkStack(linkStack); 55 56 pushLinkStack(linkStack,4); 57 58 isEmptyLinkStack(linkStack); 59 printLinkStack(linkStack); 60 61 int linkStackTopElement = 0; 62 63 popLinkStack(linkStack,linkStackTopElement); 64 printLinkStack(linkStack); 65 popLinkStack(linkStack,linkStackTopElement); 66 printLinkStack(linkStack); 67 popLinkStack(linkStack,linkStackTopElement); 68 printLinkStack(linkStack); 69 70 linkStackTopElement = 10; 71 pushLinkStack(linkStack,linkStackTopElement); 72 printLinkStack(linkStack); 73 popLinkStack(linkStack, linkStackTopElement); 74 popLinkStack(linkStack, linkStackTopElement); 75 popLinkStack(linkStack, linkStackTopElement); 76 printLinkStack(linkStack); 77 pushLinkStack(linkStack,20); 78 printLinkStack(linkStack); 79 80 } 81 82 83 #pragma mark - 84 void initLinkStack(LinkStackNode *&linkStack){ 85 86 linkStack = (LinkStackNode *)malloc(sizeof(LinkStackNode)); 87 linkStack->next = NULL; 88 } 89 90 #pragma mark - 91 92 int isEmptyLinkStack(LinkStackNode *linkStack){ 93 94 if(linkStack->next == NULL){ 95 cout<<" "<<endl; 96 return 1; 97 }else{ 98 cout<<" "<<endl; 99 return 0; 100 } 101 } 102 103 #pragma mark - 104 void printLinkStack(LinkStackNode *linkStack){ 105 106 cout<endl; 107 if(linkStack->next == NULL){ 108 cout<<" "; 109 return; 110 }else{ 111 112 LinkStackNode *p; 113 p = linkStack->next; 114 // 115 // p->next = NULL; 116 while(p != NULL){ 117 118 cout<data<<endl; 119 p = p -> next; 120 /* 2 3 3 2 121 * 122 * */ 123 124 } 125 } 126 127 } 128 129 #pragma mark - 130 int pushLinkStack(LinkStackNode *linkStack,int x){ 131 // 132 LinkStackNode *p; 133 p = (LinkStackNode *)malloc(sizeof(LinkStackNode)); 134 135 p->next = NULL; 136 p->data = x; 137 138 p->next = linkStack->next; 139 linkStack->next = p; 140 cout<<" "<" :"<endl; 141 return 1; 142 143 } 144 145 #pragma mark - 146 int popLinkStack(LinkStackNode *linkStack,int &x){ 147 148 cout<" "<endl; 149 if(linkStack->next == NULL){ 150 cout<<" linkStack: "<endl; 151 return 0; 152 }else{ 153 LinkStackNode *p; 154 p = linkStack->next; 155 x = p->data; 156 linkStack->next = p->next; 157 free(p); 158 cout<<" linkStack: "<" "<endl; 159 return 1; 160 } 161 162 } 163 164 165 #pragma mark - 166 void notices(){ 167 168 /* 2 3 3 2 169 * 170 * */ 171 }


----------チェーンスタック関連操作----------
チェーンスタック0 x 100400590に入ったばかりのものは:1
チェーンスタック0 x 100400590に入ったばかりのものは:2
チェーンスタック0 x 100400590に入ったばかりのものは:3
----------印刷チェーンスタックの情報:アドレス0 x 100400590----------
3
2
1
チェーンスタック0 x 100400590に入ったばかりのものは:4
チェーンスタックは空ではありません
----------印刷チェーンスタックの情報:アドレス0 x 100400590----------
4
3
2
1
----------出桟操作-----------------
チェーンスタックlinkStack:アドレス0 x 100400590現在のスタック要素4
----------印刷チェーンスタックの情報:アドレス0 x 100400590----------
3
2
1
----------出桟操作-----------------
チェーンスタックlinkStack:アドレス0 x 100400590現在のスタック要素3
----------印刷チェーンスタックの情報:アドレス0 x 100400590----------
2
1
----------出桟操作-----------------
チェーンスタックlinkStack:アドレス0 x 100400590現在のスタック要素2
----------印刷チェーンスタックの情報:アドレス0 x 100400590----------
1
チェーンスタック0 x 100400590に入ったばかりのものは:10
----------印刷チェーンスタックの情報:アドレス0 x 100400590----------
10
1
----------出桟操作-----------------
チェーンスタックlinkStack:アドレス0 x 100400590現在のスタック要素10
----------出桟操作-----------------
チェーンスタックlinkStack:アドレス0 x 100400590現在のスタック要素1
----------出桟操作-----------------
スタックが空でスタックチェーンスタックlinkStack:アドレス0 x 100400590
----------印刷チェーンスタックの情報:アドレス0 x 100400590----------
スタックが空のチェーンスタック0 x 100400590に入ったばかりのものは:20
----------印刷チェーンスタックの情報:アドレス0 x 100400590----------
20
Program ended with exit code: 0