栈链式存储

来源:互联网 发布:淘宝直营店怎么开 编辑:程序博客网 时间:2024/05/22 05:22
#include <iostream>using namespace std;#include <stdlib.h>#define ERROR 0#define OK    1typedef struct Nlink { //栈的链式结构  int data;   //数据域  Nlink *top;   //出栈  Nlink *base;  //进栈}Nlink,*linklist; bool init_link(linklist &L) {    //栈的初始化  L = (linklist)malloc(sizeof(Nlink));   if(!L) return ERROR;  L ->base = NULL;      //栈顶和栈底指向NULL值  L ->top = L ->base; return OK;}bool push_link(linklist &L) {    //入栈函数  linklist T;  bool gohead = 1;  int data;  cout << "Please input some datum(enter '0' means end of input!) :" <<endl;  while(gohead) {    cin >> data;    if(data < 0) {    cout << "ERROR DATUM!" <<endl;    return ERROR;  }  if(0 != data) {    T = (linklist)malloc(sizeof(Nlink)); //运用逆向建表方式,进行压栈    if(!T) return ERROR;    T ->data = data;    T ->top = L;    L = T;  }  else gohead = 0; } return OK;}void pop_link(linklist L) {       //出栈函数  while (L ->top != L->base) {   cout << L ->data;   L = L ->top;   if(L ->top != NULL)     cout << ", "; }} bool main() {  linklist P;  init_link(P);  push_link(P);  pop_link(P);   free(P);  while(OK);  return OK;}

结果图:

 

 总结:书上用了线性存储方法,而我练习用链式存储。

第一,回忆栈的结构,就是一个指针总是最顶端,另一个是最低端;

但是链式的栈又是怎样?栈的特点就是先进后出,好像链式结构入栈在就是相当

存储下一个数据位置(栈顶指针等于next)?,出栈相当是打印数据,这好像没有

体现栈的特点。我写错了吗?

第二,我的思想是之前编写逆向建立链式存储而写栈的程序,因为最先写入的数据

相当插入链的尾部。

总体上,总觉有问题。

原创粉丝点击