数据结构实验
实验内容和目的:
掌握几种基本的数据结构:集合、线性结构、树形结构等在求解实际问题中的应用,以及培养书写规范文档的技巧。学习基本的查和排序技术。让我们在实际上机中具有编制相当规模的程序的能力。养成一种良好的程序设计风格。
实验教材:
数据结构题集(C语言版) 清华大学出版社二叉树的遍历及应用实验报告 2007年
实验项目:
实验一、栈和循环队列
㈠、实验内容:
1 栈
掌握栈的特点(先进后出FILO)及基本操作,如入栈、出栈等,栈的顺序存储结构和链式存储结构,以便在实际问题背景下灵活应用。本程序采用的是链栈结构,具有初始化一个栈、PUSH、POP、显示所有栈里的元素四个功能。
2 循环队列
掌握队列的特点(先进先出FIFO)及基本操作,如入队、出队等,学会循环队列的实现,以便在实际问题背景下灵活运用。本程序具有初始化一个队列、入队、出队、显示队列的所有元素、队列长度五个功能。
㈡、实验代码
1 栈
程序代码:
#include <stdio.h>
#include <malloc.h>
#define Stack_Size 6
#define ERROR 0
#define OK 1
typedef int SElemType;
typedef struct SNode
{
SElemType data;
struct SNode *next;
}SNode,*LinkStack;
int CreatTwo(LinkStack &head,int n)
{
int i;
SNode *p;
head=(LinkStack)malloc(sizeof(SNode));
head->next=NULL;
printf("请输入数据(数字):\n");
for(i=n;i>0;--i)
{
p=(SNode *)malloc(sizeof(SNode));
scanf("%d",&p->data);
p->next=head->next;
head->next=p;
}
return 1;
}
int menu_select()
{
int sn;
for(;;)
{
scanf("%d",&sn);
if(sn<1||sn>6)
printf("\n\t输入错误,请重新输入\n");
else
break;
}
return sn;
}
int Push(LinkStack &top,SElemType e)
{
SNode *q;
q=(LinkStack)malloc(sizeof(SNode));
if(!q)
{
printf("溢出!\n");
return(ERROR);
}
q->data=e;
q->next=top->next;
top->next=q;
return(OK);
}
int Pop(LinkStack &top,SElemType &e)
{
SNode *q;
if(!top->next)
{printf("error!\n");
return(ERROR);}
e=top->next->data;
q=top->next;
top->next=q->next;
free(q);
return(OK);
}
void main()
{ int e;
LinkStack top;
printf("1.初始化一个栈;\n2.PUSH;\n3.POP;\n4.显示所有栈里的元素;\n5.结束;\n");
while(1)
{
switch(menu_select())
{
case 1:
if(CreatTwo(top,Stack_Size))printf("Success!\n");break;
case 2:
printf("Push:\n");
scanf("%d",&e);
if(Push(top,e))printf("Success!\n");
break;
case 3:
if(Pop(top,e))printf("Success!\n");
printf("%d\n",e);
break;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论