c/c++实现顺序栈和链栈

来源:互联网 发布:云计算新趋势 gartner 编辑:程序博客网 时间:2024/06/05 09:39

实现基于C/C++的数据结构的顺序栈,此程序未经过严格实验,只是提供大概思路

#include<stdio.h>

#include<stdlib.h>
#define MAXSIZE 100


typedef int DataType;
typedef struct {
DataType data[MAXSIZE];
int top;
}SeqStack,*PSeqStack;


PSeqStack init_SeqStack()
{
PSeqStack s;
s=(PSeqStack)malloc(sizeof(SeqStack));
if(s)
 s->top=-1;
return s;
}


void destroy_SeqStack(PSeqStack S)
{
if(s)
 free(s);
s=NULL;
return;
}


int isEmpty_SeqStack(PSeqStack s)
{
if(s->top==-1)
 return 1;
else
 return 0;
}


int push_SeqStack(PSeqStack s,DataType x)
{
if(s->top==MAXSIZE-1)
{
printf("the stack is full");
return 0;
}
else
{
s->top++;
s->data[s->top]=x;
return 1;
}
}


int pop_SeqStack(PSeqStack s,DataType *x)
{
if(isEmpty_SeqStack(s))
{
printf("the stack is empty");
return 0;
}
else
{
*x=s->data[s->top];
s->top--;
return 1;
}
}


int getTop_SeqStack(PSeqStack s,DataType *x)
{
if(isEmpty_SeqStack(s))
{
printf("the stack is empty");
return 0;
}
else
{
*x=s->data[s->top];
return 1;
}
}


int main()
{
return 0;
}


实现基于C/C++的数据结构的链栈,此程序未经过严格实验,只是提供大概思路

#include<stdio.h>
#include<stdlib.h>


typedef int DataType;
typedef struct node{
DataType data;
struct node *next;
}StackNode,*PStackNode;
typedef struct{
PStackNode top;
}LinkStack,*PLinkStack;


PLinkStack init_LinkStack()
{
PLinkStack s;
s=(PLinkStack)malloc(sizeof(LinkStack));
if(s) s->top=NULL;
return s;
}


void destroy_LinkStack(PLinkStack s)
{
PStackNode p,q;
if(s)
{
while(p)
{
p=s->top;
q=p;
p=p->next;
free(q);
}
free(s);

}
s=NULL;

}


int isEmpty_LinkStack(PLinkStack s)
{
return (s->top==NULL);
}


int push_LinkStack(PLinkStack s,DataType x)
{
PStackNode p=(PStackNode)malloc(sizeof(StackNode));
if(!p)
{
printf("memory out");
return 0;
}
p->data=x;
p->next=s->top;
s->top=p;
return 1;
}


int pop_LinkStack(PLinkStack s,DataType *x)
{
PStackNode p;
if(isEmpty_LinkStack(s))
{
printf("the stack is empty");
return0;
}
else
{
*x=s->top->data;
p=s->top;
s->top=s->top->next;
free(p);
return 1;
}
}


int getTop_LinkStack(PLinkStack s,DataType *x)
{
if(isEmpty_LinkStack(s))
{
printf("the stack is empty");
return0;
}
else
{
*x=s->top->data;
return 1;
}
}


int main()
{
return 0;
}





0 0
原创粉丝点击