数据结构实验报告
实验二栈及队列
姓名:吴波
学号:20115844
班级:计科2011-01
设计时间:25/4 2013
LAGO3-
源代码
#include<>
#include<>
typedef char Element;
typedef struct linknode
{
Element ch;
struct linknode *next;
}Linkstack;
void Initstack(Linkstack *&s) //初始化函数
{
s=(Linkstack *)malloc(sizeof(Linkstack));
s->next=NULL;
}
bool Stackempty(Linkstack *&s) //判空函数
{
return(s->next==NULL);
}
void Push(Linkstack *&s,Element e) //元素入栈函数
{
Linkstack *p;
p=(Linkstack *)malloc(sizeof(Linkstack));
p->ch=e;
p->next=s->next;
s->next=p;
}
int Lenlinkstack(Linkstack *&s) //计算链栈长度
{
int i=0;
Linkstack *p=s;
while(p->next!=NULL) p=p->next,i++;
return i;
}
void Display(Linkstack *&s) //输出链栈函数
{
Linkstack *p=s;
while(p->next!=NULL) p=p->next,printf("%c\t",p->ch);
printf("\n");
}
void Destroylink(Linkstack *&s) //释放链栈
{
Linkstack *p=s,*q=s->next;
while(q!=NULL){
free(p);
p=q;
q=p->next;
}
free(p);
}
/************************\
*** 主函数 ***
\************************/
int main(void)
{
Linkstack *s;
printf("(1)初始化链栈\n");
Initstack(s);
printf("(2)判断是否为空:%d\n",Stackempty(s));
printf("(3)依次入栈“a,b,c,d,e”\n");
Push(s,'a');
Push(s,'b');
Push(s,'c');
Push(s,'d');
Push(s,'e');
printf("(4)判断是否为空:%d\n",Stackempty(s));
printf("(5)计算链栈长度:\t%d\n",Lenlinkstack(s));
printf("(6)输出从栈顶到栈底元素:");
Display(s);
printf("(7)判断是否为空:%d\n",Stackempty(s));
printf("(8)释放链栈\n");
Destroylink(s);
}
运行效果:
ALOGO3-2
源代码:
#include <>
#define Maxsize 20
#include <>
typedef char Elemtype;
typedef struct
{
Elemtype ch[Maxsize];
int front,rear;
}SqQueue;
void Intlist(SqQueue * &q) //初始化函数;
{
q=(SqQueue *)malloc(sizeof(SqQueue));
q->front=q->rear=0;
}
bool QueueEmpty(SqQueue *q) //判断是否为空
{
return(q->front==q->rear);
}
bool enQueue(SqQueue *&q,Elemtype e) //进队列
{
if((q->rear+1)%Maxsize==q->front)
return false;
q->rear=(q->rear+1)%Maxsize;
q->ch[q->rear]=e;
return true
20155844-_吴波-数据结构实验二.doc 来自淘豆网m.daumloan.com转载请标明出处.