//
// 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;
}
栈的链式储存结构
猜你喜欢
转载自blog.csdn.net/s12117719679/article/details/84783902
今日推荐
周排行