zl程序教程

您现在的位置是:首页 >  后端

当前栏目

数据结构(C语言版)实现链栈的创建,赋值随机数,进栈,出栈,取栈顶元素,输出

C语言输出数据结构 实现 创建 元素 赋值 随机数
2023-09-27 14:25:56 时间
数据结构(C语言版)实现链栈的创建 赋值随机数 进栈 出栈 取栈顶元素 输出1.链表(链式存储结构)

运算时受限的单链表 只能在链表头部进行操作 故没有必要附加头结点 栈顶指针就是链表的头指针

2.图示

image.png

3.代码块链栈定义
//链栈定义 

typedef struct StackNode{

 SElemType data;

 struct StackNode *next;

}StackNode,*LinkStack; 

链栈初始化
//链栈初始化

Status InitStack(LinkStack S){

 S NULL;

 return OK;

链栈压栈
//链栈进栈

Status Push(LinkStack S,SElemType e){

 //创建新结点 链栈没有上限 

 StackNode *p new StackNode();

 if(!p) return ERROR;

 p- data e;

 p- next S;

 S p;

 return OK;

链栈出栈
//链栈出栈

Status Pop(LinkStack S,SElemType e){

 //判断链栈是不是空

 if(!S) return ERROR;

 StackNode *p S;

 e S- data;

 S S- next;

 delete p;

 return OK;

链栈获取栈顶元素
//取链栈栈顶元素 

Status GetTop(LinkStack S,SElemType e){

 //判断链栈是不是空

 if(!S) return ERROR;

 e S- data;

 return OK; 

链栈赋随机值
//链表赋值 

Status InStack(LinkStack S,int n){

 for(int i 0;i n;i ){

 Push(S,rand());

 return OK;

链栈输出
//链栈打印

Status PrintStack(LinkStack S){

 //判断链栈是不是空 

 if(!S) return ERROR;

 for(int i 0;S;i ){

 cout S- data ;

 S S- next;

 cout endl;

 return OK;

4.代码实现
#include iostream 

#include stdlib.h 

using namespace std;

#define ERROR 0

#define OK 1

typedef int SElemType;

typedef int Status;

//链栈定义 

typedef struct StackNode{

 SElemType data;

 struct StackNode *next;

}StackNode,*LinkStack; 

//链栈初始化

Status InitStack(LinkStack S){

 S NULL;

 return OK;

//链栈进栈

Status Push(LinkStack S,SElemType e){

 //创建新结点 链栈没有上限 

 StackNode *p new StackNode();

 if(!p) return ERROR;

 p- data e;

 p- next S;

 S p;

 return OK;

//链栈出栈

Status Pop(LinkStack S,SElemType e){

 //判断链栈是不是空

 if(!S) return ERROR;

 StackNode *p S;

 e S- data;

 S S- next;

 delete p;

 return OK;

//取链栈栈顶元素 

Status GetTop(LinkStack S,SElemType e){

 //判断链栈是不是空

 if(!S) return ERROR;

 e S- data;

 return OK; 

//链栈打印

Status PrintStack(LinkStack S){

 //判断链栈是不是空 

 if(!S) return ERROR;

 for(int i 0;S;i ){

 cout S- data ;

 S S- next;

 cout endl;

 return OK;

//链表赋值 

Status InStack(LinkStack S,int n){

 for(int i 0;i n;i ){

 Push(S,rand());

 return OK;

int main(){

 int e;

 //链表初始化 

 LinkStack S;

 InitStack(S);

 //链表赋值 

 cout 链表赋值 endl; 

 cout 随机给链表赋值多少个 endl; 

 cin e; 

 InStack(S,e);

 //遍历输出链表 

 cout 链表赋值完成 endl; 

 PrintStack(S);

 //链表进栈 

 cout 链表进栈 endl;

 cout 要进栈的元素 endl;

 cin e; 

 Push(S,e);

 cout 链表进栈完成 endl; 

 PrintStack(S);

 //链表出栈

 cout 链表出栈 endl;

 cout 链表出栈完成 endl;

 Pop(S,e);

 cout e endl; 

 //获取链栈栈顶元素

 cout 获取链栈栈顶元素完成 endl;

 GetTop(S,e);

 cout e endl; 

 return 0;

编译运行

20201112155311187.gif



C语言题解 | 移除元素(多种解法) 这是力扣上的一道简单题,需求是 移除数组中的指定元素,并且要求 空间复杂度为O(1) ,即原地移除,我们可以用顺序表中的任意位置删除的思想解决这个题,符合题目要求,当然还有其他解法。
C语言实现链栈相关操作 栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。