栈的实现

2017-05-11  本文已影响0人  三三At你
#include<iostream>  
#include<stdio.h>  
#include<string.h>  
#include<malloc.h>  
#define VARTYPE char //默认存放char类型  
  
  
using namespace std;  
  
  
  
  
struct myNode;  
typedef struct myNode Node;  
typedef Node* _Stack;  
typedef Node* PtrToNode;  
  
  
struct myNode  
{  
    VARTYPE data;  
    PtrToNode next;  
};  
  
  
void _push(_Stack &T,VARTYPE x)  
{  
    PtrToNode tmp = (PtrToNode)malloc(sizeof(Node));  
    if(tmp==NULL)  
        perror("malloc failed");  
    else  
    {  
        tmp->data = x;  
        tmp->next = T;  
        T = tmp;  
    }  
}  
  
  
void _pop(_Stack &T)  
{  
    PtrToNode tmp;  
    tmp = T;  
    T = T->next;  
    free(tmp);  
}  
  
  
int _isempty(_Stack &T)  
{  
    return T->next==NULL;  
}  
  
  
void _delstack(_Stack &T)  
{  
    while(!_isempty(T))  
    {  
        _pop(T);  
    }  
}  
  
  
VARTYPE _top(_Stack &T)  
{  
    return T->data;  
}  
  
  
_Stack create(_Stack &T)  
{  
    T = (PtrToNode)malloc(sizeof(Node));  
    T->next = NULL;  
    return T;  
}  
  
  
int main()  
{  
    _Stack T = create(T);  
    _push(T,'a');  
    _push(T,'b');  
    _push(T,'c');  
    _pop(T);  
    _pop(T);  
    _pop(T);  
    _delstack(T);  
    return 0;  
}  
上一篇 下一篇

猜你喜欢

热点阅读