美文网首页程序员
栈的链表表示

栈的链表表示

作者: 星girl | 来源:发表于2018-06-13 15:20 被阅读0次

初始化栈stack,用以存储全局变量top和bottom,ps为top和bottom的地址。

include <stdio.h>

include <stdlib.h>

include<stdbool.h>

//定义插入元素结构体类型
typedef struct node {
float m;
struct node Next;
}Node,
pnode;

//定义栈结构体类型
typedef struct Zhan {
Node * top;
Node * bottom;
}Stack,*pStack;

void Intial(pStack ps) {
ps->top = (Node *)malloc(sizeof(Node));
ps->bottom = ps->top;
if (ps->top == NULL) printf("栈的初始化error!");
else printf("栈的初始化success!");
}

void pushZhan(pStack ps,float datas) {
Node * new = (Node *)malloc(sizeof(Node));
new->m = datas;
new->Next = NULL;
new->Next = ps->top;
ps->top = new;
}

float popZhan(pStack ps) {
if (ps->top == ps->bottom) return -1;
float datas = ps->top->m;
Node *r = ps->top;
ps->top = ps->top->Next;
free(r);
return datas;
}

bool IsEmpt(pStack ps) {
bool r;
if (ps->top == ps->bottom)
{
r = true;
}
else { r = false; }
return r;
}

//展示栈中的元素
void ShowStack(pStack ps) {
Node * r = ps->top;
while (r != ps->bottom) {
printf("%f->", r->m);
r = r->Next;
}
}

void main() {
//初始化一个栈
pStack ps=(Stack *)malloc(sizeof(Stack));
Intial(ps);
//入队
pushZhan(ps, 3.8);
pushZhan(ps, 6.8);
pushZhan(ps, 8.8);
ShowStack(ps); printf("\n");
//出队
float a;
a = popZhan(ps);
printf("%f\n", a);
a = popZhan(ps);
printf("%f\n", a);
ShowStack(ps); printf("\n");
}
--------------------------------------实验结果展示----------------------------------------------

栈链表.png

相关文章

  • 栈的链表表示

    初始化栈stack,用以存储全局变量top和bottom,ps为top和bottom的地址。 include

  • 常见的数据结构

    常见的数据结构有: 数组 链表单链表、双向链表、循环链表、双向循环链表、静态链表 栈顺序栈、链式栈 队列普通队列、...

  • 栈(链栈)

    栈:限定只能在表尾进行插入和删除的线性表。 链栈:使用链表表示的栈。 链栈特性: 只能栈顶插入和删除元素。 无需预...

  • 数据结构与算法之数组与链表

    线性表包括数组,链表(单链表,双向链表,循环链表,双向循环链表,静态链表),栈(顺序栈,链式栈),队列(普通队列,...

  • 数据结构与算法之栈与队列

    线性表包括数组,链表(单链表,双向链表,循环链表,双向循环链表,静态链表),栈(顺序栈,链式栈),队列(普通队列,...

  • 栈和队列

    栈——后入先出 利用数组实现,有stack.top表示栈顶元素,为数组的最后一个元素。(也可利用链表实现) 验证栈...

  • 链表实现栈(LIFO)、队列(FIFO)

    今天来用链表实现栈 栈可以用链表实现,压栈操作即在链表头赋值,弹栈只需要将链表头元素指向下一个即可 由此可见,链表...

  • 数据结构-队列和栈

    队列和栈都是逻辑结构,其物理结构可以用数组和链表表示。只要记住队列和栈数据操作的特殊性,我觉得就能掌握队列和栈了。...

  • 数据结构

    数据结构 队列&栈&链表&集合&hash表&树&图 队列 先进先出 栈 先进后出 链表 单向链表 双向链表 循环链...

  • 链表反转

    链表反转的思路:1.利用栈后进先出的特性,将链表的每个节点都Push进栈,然后再Pop出栈,保存进链表,实现反转。...

网友评论

    本文标题:栈的链表表示

    本文链接:https://www.haomeiwen.com/subject/xcbjeftx.html