#include <stdio.h>
#include <stdlib.h>
#define INITIAL_SIZE 10
struct stack{
int *top;
int *base;
int stackSize;
};
typedef struct stack * Stack;
void initial(Stack stack){
stack->stackSize = INITIAL_SIZE;
stack->base = stack->top = (int*)malloc(INITIAL_SIZE*sizeof(int));
}
int getTop(Stack stack){
if(stack->base == stack->top){return NULL;}
int* p = stack->top;
p--;
return *p;
}
int pop(Stack stack ){
if(stack->base == stack->top){return NULL;}
int* p = stack->top;
p--;
stack->top = p;
return *p;
}
void push(Stack stack , int data){
if((stack->top-stack->base)>=stack->stackSize){return;}
*(stack->top)=data;
stack->top++;
}
int getLength(Stack stack){
return stack->top-stack->base;
}
void iteratorElem(Stack stack){
printf("\n======================================\n");
int * p = stack->base;
while(p != stack->top){
printf("%d \t",*p);
p++;
}
printf("\n======================================\n");
}
void main(){
Stack stack=(Stack)malloc(sizeof(Stack));
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);
printf("Stack top elem: %d\n",getTop(stack));
printf("Stack elem length: %d\n",getLength(stack));
}
}
分享到:
相关推荐
本主题“C语言顺序表队列栈实现”主要关注的是如何在C语言中使用数组来构建和操作两种基本的数据结构——队列和栈。 队列是一种先进先出(FIFO,First In First Out)的数据结构,常用于模拟处理任务的顺序,例如...
根据给定的文件信息,我们将深入探讨顺序表、顺序队列和顺序栈的算法实现,以及它们在实际编程中的应用。 ### 顺序表 #### 实验目的与内容 实验一的目标在于让学生掌握顺序表的存储表示及其基本运算的实现方法,并...
栈是一种特殊的线性表,它只能在线性表的一端进行插入删除操作,允许插入删除的一端称为栈顶,另...既然栈也是线性表,那么栈就可以通过线性表来实现,实现顺序栈只需在顺序表的插入删除操作时,只限定在一端操作即可。
本文将详细介绍如何使用顺序存储结构来实现栈,并根据所给标题和描述,讨论相关的C语言实现细节。 首先,我们来看栈的顺序存储结构。在顺序栈中,元素被存储在一块连续的内存区域中,就像一个数组。这种存储方式...
- 顺序表常用于实现简单的缓存、队列和栈等数据结构。 - 在小规模数据处理或对插入、删除速度要求不高的场景下,顺序表是一个很好的选择。 - 对于大数据量的场景,通常会使用链表、树或其他高效数据结构。 以上...
在C语言中,可以通过数组来实现顺序表。顺序表支持随机访问,即可以通过下标直接获取指定位置的数据元素,时间复杂度为O(1)。 #### 2. 基本操作 - **初始化**: 初始化一个固定长度的顺序表。 - **插入**: 在顺序表...
顺序表常用于小规模数据的存储,或者在数据量变化不大的情况下,如栈和队列的实现。 通过学习和实践PTA上的这些题目,你可以深入理解顺序表的数据结构,提升C语言编程能力,并为更高级的数据结构和算法学习打下...
在C语言中,顺序队列(seqqueue.c)通常使用数组实现,而链式队列则使用链表实现。`seqqueue.c`可能包含了顺序队列的创建、入队(enqueue,添加元素到队尾)、出队(dequeue,移除并返回队首元素)等操作。 在`...
本篇文章将深入探讨顺序表的概念、实现、操作以及其在C语言中的应用。 顺序表是一种线性数据结构,它的特点是元素在内存中按顺序连续存储。每个元素都有一个固定的位置,可以通过索引直接访问。在C语言中,我们可以...
本文将详细讨论在C语言中如何实现栈,包括顺序栈和链栈,并基于提供的文件名来解析它们的实现。 1. **顺序栈**:顺序栈是通过数组来实现的,其优点在于存储空间连续,访问速度快。`stack_array.c`和`stack_array.h`...
本压缩包文件包含了关于C语言中数据结构实现的一些程序,具体涉及到了顺序链表、单链表和双链表以及栈的数据结构。下面我们将详细探讨这些知识点。 首先,我们来看顺序链表。顺序链表是一种线性数据结构,其元素在...
尽管提供的代码示例主要展示了双向栈的实现,但从中我们可以学习到C语言中顺序表实现的关键要素:内存分配、数据插入与删除的处理、以及动态内存管理等。对于理解更复杂的顺序表操作,如查找、排序等,这将是一个...
数据结构基于C语言实现的顺序表. #include #include #define MAXSIZE 100/* 定义二叉树节点类型 */ typedef struct node { char data; struct node *lchild, *rchild; }BTNode; BTNode* CreatBitTree()/* 递归...
在C语言中,我们通常使用数组来实现顺序表。初始化一个顺序表,通常涉及定义一个固定大小的数组,并设置一个指向数组首元素的指针。插入和删除操作可能涉及移动元素,因为所有元素都按照顺序紧密相连。例如,在数组...
本文将深入探讨一种常用的数据结构——栈,特别是顺序栈和链表栈,它们都是实现栈功能的不同方式。栈通常被称为“后进先出”(LIFO,Last In First Out)的数据结构,广泛应用于各种算法和程序设计中,如表达式求值...
在这个“shunxubiao.rar”压缩包中,包含了一个名为“shunxubiao.c”的源代码文件,这显然是一个用C语言编写的程序,用于演示如何实现顺序表的栈以及进行进栈和出栈操作。 首先,我们要理解什么是顺序表。顺序表是...
4、算法如下:Linser 函数可以在顺序表中插入数据,并保持表的顺序。 5、算法如下:LDel 函数可以在顺序表中删除数据,并保持表的顺序。 6、算法如下:Delet 函数可以在链表中删除数据,并保持链表的顺序。 第三...
在这个"shujujiegou.rar_c 数据结构_数据结构_栈_链表 实现_顺序表"压缩包中,包含了C语言实现的数据结构相关的源代码,主要关注的是顺序表、链表和栈这三种基本数据结构。下面我们将逐一探讨这些数据结构及其基本...
在本主题中,我们将深入探讨几种重要的数据结构及其在C/C++中的实现:顺序表、链表、队列、栈和树。这些数据结构不仅在算法设计中扮演着关键角色,而且在实际应用如操作系统、数据库、网络编程等领域也有广泛的应用...
本资源是一份关于栈和队列的顺序-链式储存结构的实验报告,通过C语言实现了栈和队列的初始化、入栈、出栈、输出操作,并且讨论了队列的循环存储结构。 知识点: 1. 栈的顺序存储结构: * 顺序栈的定义:使用数组...