链栈的创建、入栈、出栈

来源:互联网 发布:2017网络热词两个字 编辑:程序博客网 时间:2024/06/15 13:30

链栈是在链表基础上建立的,链栈的栈顶指针相当于链表中的头指针。示意图如下:


#include "stdafx.h"#include<iostream>typedef int type;using namespace std;typedef struct stack{type data;struct stack *next;}stack,*ChainStack;//建立空栈函数ChainStack CreateChainStack(ChainStack s){s=(ChainStack)malloc(sizeof(stack)); //相当于链表的头结点if(NULL==s){ return NULL;}s->data=-1;s->next=NULL;return s;}//入栈ChainStack Push(ChainStack s,type data){ChainStack temp=(ChainStack)malloc(sizeof(stack)); if(NULL==temp){  cout<<"申请内存失败!"<<endl;  exit(-1);}temp->data=data;temp->next=s->next;s->next=temp;return s;}//计算链栈的长度int LengthStack(ChainStack s){int i=0;ChainStack temp=s->next;while(NULL!=temp){  i++;  temp=temp->next;}return i;}//出栈ChainStack Pop(ChainStack s){ChainStack temp;int len=LengthStack(s);if(NULL==s->next)     {  return NULL;}temp=s->next;s->next=temp->next;return temp;}//打印链栈中的元素void PrintSatck(ChainStack s){ChainStack temp=s->next;if(NULL==s->next)     {  exit(-1);}    while(NULL!=temp){cout<<temp->data<<" ";temp=temp->next;}cout<<endl;}int _tmain(int argc, _TCHAR* argv[]){int a[6]={20,22,24,26,28,30};   ChainStack s=NULL;   s=CreateChainStack(s);   for(int i=0;i<6;i++)   Push(s,a[i]);   PrintSatck(s);   ChainStack tp=Pop(s);   cout<<tp->data<<endl;return 0;}

运行结果为:


0 0
原创粉丝点击