栈的链式储存结构

//

//  main.cpp

//  栈的链式储存结构

//

//  Created by 柯木超 on 2018/12/4.

//  Copyright © 2018 柯木超. All rights reserved.

//


#include <iostream>


// 链式栈的基本数据单元

typedef struct Stack{

    int data;

    struct Stack *next;

}linkStack, *link;

/**

链式储存结构和顺序存储结构的区别:



1、链式储存结构是由多个结构体组成的

2、而顺序存储结构就一个结构体构成的,然后结构体里面包含全部的数据和一个指针

**/



// 创建链栈

link createStask(){

    // 头指针
    link T,P,M; //T记录头节点,M 记录当前移动节点,P是当前输入节点
    T = (link)malloc(sizeof(linkStack));
    M=T;
    for (int i=0; i<10;i++) {
        P = (link)malloc(sizeof(linkStack));
        P->data = i;
        M->next = P;
        M = M->next;
    }
    M->next = NULL; //  链表的末尾记得一定要设置为空
    return T;
}



// 打印数据

void printStack(link L){
    while (L->next != NULL) {
        L=L->next;
        printf("%d",L->data);
    }
    printf("\n");
}



// 插入数据(只能插入栈顶)

link insertStask(link L, int data){
    link P = (link)malloc(sizeof(linkStack));
    P->data = data;
    P->next = L->next;
    L->next = P;
    return L;

}

// 删除数据

link deleteStask(link L){
    link T = L; // 标记头节点
    link frist = L->next; //拿到第一个有数据的节点
    T->next = L->next->next;
    free(frist);
    return T;

}


// 获取斩顶元素

int getTopStask(link L){
    int i = 0;
    i=L->next->data;
    return i;
}


int main(int argc, const char * argv[]) {

    link L = createStask();

    printf("斩顶元素==%d\n",getTopStask(L));

    printStack(L);

    deleteStask(L);

    printStack(L);

    insertStask(L, 100);

    printStack(L);

    return 0;

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈皮话梅糖@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值