C语言数据结构实现入队出队入栈出栈操作代码怎么写?
发布网友
发布时间:2022-05-20 22:43
我来回答
共4个回答
热心网友
时间:2023-10-08 14:48
栈肯定用链表实现起来灵活点,入栈的时候,把新的节点直接直接放到头节点之后,已有的节点全部往后移了一个位置,然后出栈的时候,每次取出头节点之后的那个节点,头节点指到下一个节点。
这样就实现了“后进先出”。代码自己写吧,练习练习。
热心网友
时间:2023-10-08 14:49
//It's the header
//stack_class.h
#ifndef _STACK_CLASS_H_
#define _STACK_CLASS_H_
#include <tchar.h>
/***
*it's used as the element of the stack
***/
typedef struct s_node
{
int nData;
struct s_node *pNext;
/***
*do the initialization
***/
s_node()
{
nData = 0;
pNext = NULL;
}
}S_NODE;
typedef S_NODE *PSTACK;
/***
*it's the stack class
***/
class stack_class{
public:
stack_class();
~stack_class();
int stack_push(int nData);
int stack_pop();
public:
PSTACK m_stack;
int nTop;
};
#endif
/////////////////////////////////////////////////////////
//It's the source file
//stack_class.cpp
#include "stack_class.h"
/***
*do the initialization
***/
stack_class::stack_class()
{
m_stack = NULL;
nTop = -1;
}
/***
*release the memory
***/
stack_class::~stack_class()
{
PSTACK pCurrent = NULL;
pCurrent = m_stack;
while(pCurrent)
{
m_stack = m_stack->pNext;
delete pCurrent;
pCurrent = m_stack;
}
}
/***
*function:push one element to the stack
*nData:the data you want to push
*retval:return the top
*note:top:we start from -1.you can change it as you wish
***/
int stack_class::stack_push(int nData)
{
PSTACK pInsert = new S_NODE;
pInsert->nData = nData;
pInsert->pNext = NULL;
if (-1 == nTop)
{
m_stack = pInsert;
}
else
{
pInsert->pNext = m_stack;
m_stack = pInsert;
}
nTop++;
return nTop;
}
/***
*function:pop one element from the stack
*retval:return the value we pop
*note:if stack is empty,we return -1
***/
int stack_class::stack_pop()
{
int nData = 0;
PSTACK pCurrent = NULL;
pCurrent = m_stack;
if (-1 == nTop)
{
return -1;
}
else
{
nData = pCurrent->nData;
m_stack = pCurrent->pNext;
delete pCurrent;
nTop--;
}
return nData;
}
给你包装成一个类了,方便使用
热心网友
时间:2023-10-08 14:49
我有完整的代码,请留下邮箱。
热心网友
时间:2023-10-08 14:50
好像和链表差不多
C语言数据结构实现入队出队入栈出栈操作代码怎么写?
栈肯定用链表实现起来灵活点,入栈的时候,把新的节点直接直接放到头节点之后,已有的节点全部往后移了一个位置,然后出栈的时候,每次取出头节点之后的那个节点,头节点指到下一个节点。这样就实现了“后进先出”。代码自己写吧,练习练习。
数据结构定义一个栈并实现入栈和出栈操作的程序c语言完整版
如下:include "stdio.h"struct stackNode{ int data; struct stackNode *nextPtr;};typedef struct stackNode LISTSTACK;typedef LISTSTACK *STACKNODEPTR;void push(STACKNODEPTR *,int);int pop(STACKNODEPTR *);int isEmpty(STACKNODEPTR);void printStack(STACKNODEPTR);void instruct();int...
分别写函数实现初始化栈、入栈、出栈、判断栈空、判断栈满。例如入...
return TRUE;//出栈成功 }
数据结构,必采纳Let Q be a non-emply quenue and l
bool enterQueue(elemType x);//入队 bool delQueue(elemType &x); //出队 void print(); //打印队列元素;~Queue();private:Item * front;Item * rear;};class Stack { public:Stack();bool push(elemType x);//入栈 bool pop(elemType & x);//出栈;void print();~Stack();private...
急!用c语言实现链栈的操作
⑶ 入栈/*将元素x插入链栈top的栈顶*/ void PushLinkStack(LinkStack* &s , ElemType x){ LinkStack *p;p=malloc(sizeof(LinkStack)); /*生成新结点*s */ p->data=x;p->next=s;s=p;} ⑷出栈/*删除链栈top的栈顶结点*/ int PopLinkStack (LinkStack* & s, ElemType &x){ ...
利用栈的后进先出特点实现行编辑功能的程序代码(c语言)
struct//结构体定义 { StackElemType elem[Stack_Size];int top;}SeqStack;void InitStack(SeqStack S)//初始化栈 { S->top=-1;} int IsEmpty(SeqStack S)//判断是否为空 { if(S->top ==-1)return 1;else return 0;} int IsFull(SeqStack S)//判断是否满栈 { if(S->top==Stack_...
C语言数据结构关于栈的题
如出栈要实现,取出元素值,并释放空间,可结合取栈顶元素函数做修改,这里不再给出。/ int PopStack(Stack* stack){ Stack* tmpst;if(!IsEmpty(stack)){ tmpst = stack->next;stack->next = tmpst->next;free(tmpst);return 1;} return 0;} //取栈顶元素,仅取出栈顶元素的值,取出...
关于C语言的顺序栈的操作
这是我以前写的,今天不想砍代码,就发这个了 include<stdio.h> include<stdlib.h> define N 100 //栈的结构定义 typedef struct { int elem[N];int top;//栈顶 }Stack;//循环队列的结构定义 typedef struct { int elem[N];int front;int rear;}Queue;int Greatstack(Stack*);int Great...
设计算法,在顺序表上实现创建栈、入栈和出栈操作,将字符ABCDEF依次入栈...
出栈的时候就是返回该顺序表中当前基指针位置处的元素,然后让基指针减一,创建栈就是开辟一段内存单元并初始化基指针。我写的代码如下:// file :Stack.h ifndef _STACK_H_define _STACK_H_define MAX_LENGTH 128 typedef struct SeqList { char *elements;} SeqList;typedef struct Stack { Seq...
严蔚敏数据结构上对顺序栈出栈入栈的算法代码,入栈中的*top++=e和出栈...
没有问题,那个top永远指向没有元素待插入的位置(也就是栈顶元素位置的下一个下标),而不是指向栈顶元素的位置 你说的那种方式是top指向栈顶元素的位置,所以入栈变成了*++top = e,出栈成了e = *top--;了