栈的实现(基于链式结构)

链式栈基本概念

相较于顺序结构链式结构的好处是大小是不固定的但指针操作比较复杂。这里依旧使用了带首尾指针的方式。这样的好处是容易用来实现受限栈的实现,这里不做过多赘述。有兴趣的小伙伴可以自己动手实现,这里给出一个参考例题(首端插入,两端输出的栈)感兴趣的小伙伴可以一起交流一下

栈的基本操作

基本结构

这里分为主体和节点,主体是首尾指针,节点和链式存储的线性表的结构(可参见我以前的文章)

节点

//定义节点 
typedef struct Item{
    ElemType data;
    Item* next;
};

主体

//定义栈带首尾指针 
typedef struct Stack{
      Item* top;
      Item* bottom;
      int length;   //储存线性表长度 
};

初始化操作

这里也分为栈主体和节点,一个栈可能要有多个节点

//初始化节点 
Item* initItem(){
    Item* I;
    I = (Item*)malloc(sizeof(Item));
    I->data = 0;
    I->next = NULL;
    return I;
}

//初始化栈 
Stack* initStack(){
    //Item* I = initItem();
    Stack* T;
    T = (Stack*)malloc(sizeof(Stack));
    T->top = NULL;
    T->bottom = NULL;
    T->length = 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值