这次我用XCode写的C++,CLion用的不熟练,打断点调试的部分都不熟练,暂且还是用XCode 当前使用版本声明:XCode Version 8.3.3 1 #include2 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< <<"链栈相关操作"< < next = NULL; 88 } 89 90 #pragma mark - 判断链栈是否为空 91 92 int isEmptyLinkStack(LinkStackNode *linkStack){ 93 94 if(linkStack->next == NULL){ 95 cout<<"链栈为空"< 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< next;120 /*栈后进先出 如果是进栈2 3 那么打印栈的信息会是3 2121 *输出链栈信息的地方 感觉链栈的操作就类似于一个链表的头插法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<<"刚刚入链栈"< <<"的是:"< < next == NULL){150 cout<<"栈为空 不能出栈 链栈linkStack:地址"< < next;155 x = p->data;156 linkStack->next = p->next;157 free(p);158 cout<<"链栈linkStack:地址"< <<"当前出栈元素"< <
输出信息如下:
-------------链栈相关操作-------------
刚刚入链栈0x100400590的是:1
刚刚入链栈0x100400590的是:2
刚刚入链栈0x100400590的是:3
-------------打印链栈的信息:地址0x100400590-------------
3
2
1
刚刚入链栈0x100400590的是:4
链栈不为空
-------------打印链栈的信息:地址0x100400590-------------
4
3
2
1
-------------出栈操作--------------------------
链栈linkStack:地址0x100400590当前出栈元素4
-------------打印链栈的信息:地址0x100400590-------------
3
2
1
-------------出栈操作--------------------------
链栈linkStack:地址0x100400590当前出栈元素3
-------------打印链栈的信息:地址0x100400590-------------
2
1
-------------出栈操作--------------------------
链栈linkStack:地址0x100400590当前出栈元素2
-------------打印链栈的信息:地址0x100400590-------------
1
刚刚入链栈0x100400590的是:10
-------------打印链栈的信息:地址0x100400590-------------
10
1
-------------出栈操作--------------------------
链栈linkStack:地址0x100400590当前出栈元素10
-------------出栈操作--------------------------
链栈linkStack:地址0x100400590当前出栈元素1
-------------出栈操作--------------------------
栈为空不能出栈链栈linkStack:地址0x100400590
-------------打印链栈的信息:地址0x100400590-------------
栈为空刚刚入链栈0x100400590的是:20
-------------打印链栈的信息:地址0x100400590-------------
20
Program ended with exit code: 0
如有错误 敬请指正