#include <stdio.h>
#include <stdlib.h>
typedef struct node * Elem;
struct node{
int data;
Elem next;
};
typedef Elem Stack;
void initial(Stack* stack){
Elem p = (Elem)malloc(sizeof(Elem));
p->next = NULL;
*stack = p;
}
int getTop(Stack stack){
Elem p = stack->next;
if(p != NULL){
return p->data;
}else{
return NULL;
}
}
int pop(Stack stack ){
Elem p = stack->next;
if(p != NULL){
int data = p->data;
stack->next = p->next;
// free(p);
return data;
}else{
return NULL;
}
}
void push(Stack stack , int data){
Elem p = (Elem)malloc(sizeof(Elem));
p->data=data;
p->next = stack->next;
stack->next=p;
}
int getLength(Stack stack){
Elem p = stack;
int i = 0;
while(p->next!=NULL){
p=p->next;
i++;
}
return i;
}
void iteratorElem(Stack stack){
Elem p = stack->next;
printf("\n===============================================\n");
int i = 1;
while(p!= NULL){
printf("%d----->%d \t",i,p->data);
p=p->next;
i++;
}
printf("\n===============================================\n");
}
void main(){
Stack stack=NULL;
initial(&stack);
int num = 0;
for(int i =0;i<8;i++){
scanf("%d",&num);
push(stack,num);
}
iteratorElem(stack);
printf("Stack top elem: %d\n",getTop(stack));
printf("Stack elem length: %d\n",getLength(stack));
for(i =0;i<8;i++){
pop(stack);
iteratorElem(stack);
}
}
分享到:
相关推荐
栈的实现(C语言)数组实现以及链表实现源码,以及各个功能测试代码函数等 和后缀式转前缀式的用例
用函数或过程的方法设计、实现一个抽象数据类型栈或队列,包括栈或队列的基本运算操作,使得以后对栈或队列中的数据的访问,可以通过调用函数或过程来完成。
栈关于数组与链表的实现,linux c语言
栈(Stack)的链表实现。包含声明、函数实现与测试代码,另附对代码的简单说明。
包含排序,链表,图,队列,二叉树算法c++实现,这些c++是自己写的都能运行,另外还有一些c的算法实现
用链表实现栈和队列的操作,使链表操作更加成熟,熟练栈和队列的机制
详细注释了代码实现步骤 /************************************************************************* > File Name: lstack.c > Author: Gnglas > Mail: 2254228017@qq.com > Created Time: 2020年01月...
1.项目代码功能经验证ok,确保稳定可靠运行。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通,帮助解答。 ...基于C语言实现的链表、栈、队列、排序算法以及二叉树源码(课程作业).zip
自己编写的 初学 忘指教 只有简单的3中操作 初始化 插入数据 删除数据 而对于基本的查找 置空 求长度在此基础上仿照编写即可
数据结构源程序,包括:顺序表的基本运算实现,链表的基本运算与实现,栈的基本运算与实现以及实例等18个源程序。
数据结构:图解链表,用链表实现栈(c语言版) 栈(stack)是限定仅在表尾进行插入或者删除的线性表。对于栈来说,表尾端称为栈顶(top),表头端称为栈低(bottom)。不含元素的空表称为空栈。因为栈限定在表尾进行...
数据结构:图解链表,用链表实现栈的Pop和Push(c语言版) 出栈以及入栈我们只要可虑栈顶就可以,所以我们就只考虑对栈顶就行插入和删除就可以,上代码 void Pop(SqStack* s,Elemtype data) { assert(s); if (s->...
该篇是ubuntu上用数组实现栈,里面包括了,其push pull clear display等操作,在调试的时候我想到了引用传递,但是编译不过所以改用了指针,大家可以再尝试一下传引用的方法。可能是我的文件头不对,所以编过的同学...
C语言链表及堆栈的实现全收录 初学者参考
包含内容:栈、队列、循环队列的数组实现方式和链表实现方式
数据结构栈的链表和顺序结构的实现与源代码
排序 查找 队列 栈 链表等的C语言简单实现
C语言数据结构链表队列的实现 1.写在前面 队列是一种和栈相反的,遵循先进先出原则的线性表。 本代码是严蔚敏教授的数据结构书上面的伪代码的C语言实现代码。 分解代码没有包含在内的代码如下: #include #...
栈是基本的数据结构。其特点是添加和访问数据都在线性表的一端(头端)。数据访问遵循先进后出(FILO)的原则。...本程序用单向链表实现栈。是C++、数据结构及算法学习的一个小小练习。供大家参考。