栈的连式存储

来源:互联网 发布:双色球旋转矩阵中6保5 编辑:程序博客网 时间:2024/05/01 17:16

昨晚写了个栈的链式存储,自己发现了一些问题,在此提出来与大家共勉:

首先上代码:

typedef struct stack{int iData;stack *next;}sStack;
定义一个结构体,存放数据

int initStack(sStack *(&s)){s = (sStack *)malloc(sizeof(sStack));s->next = NULL;return 0;}
初始化栈
int inputStack(sStack *(&s), int x, int &change){if(0 == change){change = 1;s->iData = x;s->next = NULL;}else{sStack *temp;temp = (sStack *)malloc(sizeof(sStack));temp->iData = x;temp->next = s;s = temp;printf("插入成功!");system("pause");}return 0;}
输入栈元素,这个输入栈还有别的方法,比如:当前开辟了一个空间,就给当前节点赋值,然后节点上移。
int outputStack(sStack *s){sStack *temp = s;while(s != NULL){printf("%d ", s->iData);s = s->next;}s = temp;printf("\n");system("pause");return 0;}

输出栈元素

重要提示:

在调用函数的时候记着要使用 '&' 这个字符串,将 'mian' 函数中的变量使其在外函数中使用,如果直接像

int initStack(sStack *s){      ********}
调用的输入输出函数将无效。

这个是输出效果:

实现栈的节点移动输出:

typedef struct stack{int iData;stack *next;}sStack;int initStack(sStack *(&s)){s = (sStack *)malloc(sizeof(sStack));s->next = NULL;return 0;}int inputStack(sStack *(&s), int x, int &change){if(0 == change){change = 1;s->iData = x;s->next = NULL;}else{sStack *temp;temp = (sStack *)malloc(sizeof(sStack));temp->iData = x;temp->next = s;s = temp;printf("插入成功!");system("pause");}return 0;}int outputStack(sStack *(&s)){sStack *temp = s;if(s != NULL){printf("%d ", s->iData);s = s->next;}free(temp);printf("\n");system("pause");return 0;}


转载请注明链接

0 0
原创粉丝点击