博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
链栈的初始化 入栈 出栈 打印栈中的元素等基础内容
阅读量:5814 次
发布时间:2019-06-18

本文共 3338 字,大约阅读时间需要 11 分钟。

这次我用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<
<<"链栈相关操作"<
<
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

  如有错误 敬请指正

 

转载于:https://www.cnblogs.com/ITCoderW/p/7389431.html

你可能感兴趣的文章
dubbo源码分析-架构
查看>>
Windows phone 8 学习笔记
查看>>
我的友情链接
查看>>
LeetCode--112--路径总和
查看>>
感悟贴2016-05-13
查看>>
DEV-C++ 调试方法简明图文教程(转)
查看>>
参加婚礼
查看>>
Java重写equals方法和hashCode方法
查看>>
Spark API编程动手实战-07-join操作深入实战
查看>>
Spring ’14 Wave Update: Installing Dynamics CRM on Tablets for Windows 8.1
查看>>
MySQL 备份与恢复
查看>>
TEST
查看>>
PAT A1037
查看>>
(六)Oracle学习笔记—— 约束
查看>>
[Oracle]如何在Oracle中设置Event
查看>>
top.location.href和localtion.href有什么不同
查看>>
02-创建hibernate工程
查看>>
Scrum之 Sprint计划会议
查看>>
svn命令在linux下的使用
查看>>
Gradle之module间依赖版本同步
查看>>