C语言顺序栈
#include<iostream>
#define MAXSIZE 20
using namespace std;
typedef struct {
int data[MAXSIZE];
int top;
}SqStack;
void initStack(SqStack &S)
{
S.top=-1;
}
void insertKeyData(SqStack &S,int n)
{
for(int i=0;i<n;i++)
{
S.top++;
cin>>S.data[S.top];
}
}
void showData(SqStack S)
{
for(int i = 0;i<S.top+1;i++)
cout<<S.data[i]<<" ";
cout<<"\n";
}
void push(SqStack &S,int e)
{
if(S.top==MAXSIZE-1) cout<<"栈满";
S.data[++S.top] = e;
}
void pop(SqStack &S)
{
if(S.top==-1) cout<<"栈空";
int e = S.data[S.top--];
cout<<"出栈的元素是:"<<e<<"\n";
}
int getTop(SqStack S)
{
if(S.top==-1) return 99999;
return S.data[S.top];
}
int main()
{
SqStack S;
initStack(S);
cout<<"请输入你要插入值的个数:\n";
int insertN;
cin>>insertN;
insertKeyData(S,insertN);
showData(S);
cout<<"请输入你要插入的值:\n";
int insertE;
cin>>insertE;
push(S,insertE);
showData(S);
cout<<"接下来进行出栈操作。。。。。\n";
pop(S);
cout<<"栈顶元素为:"<<getTop(S)<<"\n";
return 0;
}
C语言链栈
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
typedef struct StackNode{
int data;
struct StackNode *next;
}StackNode,*LinkStack;
void showData(LinkStack S){
printf("栈内元素的值为:");
LinkStack p;
p=S;
while(p){
printf("%d ",p->data);
p=p->next;
}
printf("\n");
};
void InitSack(LinkStack &S){
S = NULL;
}
void insertData(LinkStack &S,int n){
S = new StackNode;
S = NULL;
printf("请倒序输入要插入的值:\n");
for(int i = 0;i<n;i++)
{
LinkStack p = new StackNode;
scanf("%d",&(p->data));
p->next = S;
S = p;
}
}
void Insert_H(LinkStack &S,int e){
StackNode *p=(StackNode*)malloc(sizeof(StackNode));
p->data = e;
p->next = S;
S = p;
}
void deleteTop(LinkStack &S)
{
if(S==NULL) printf("栈空");
int e = S->data;
printf("要删除的值为:%d\n",e);
StackNode *p=(StackNode*)malloc(sizeof(StackNode));
p = S;
S = S->next;
free(p);
}
int getLength(LinkStack S){
int i = 0;
while(S){
S = S->next;
i++;
}
return i;
}
int main(){
LinkStack S;
InitSack(S);
insertData(S, 3);
showData(S);
printf("请输入要插入的值:");
int insertData;
scanf("%d",&insertData);
Insert_H(S,insertData);
showData(S);
printf("删除栈顶元素。。。。。。\n");
deleteTop(S);
printf("删除之后栈内元素为:\n");
showData(S);
printf("长度为:%d\n",getLength(S));
return 0;
}