数据结构实验
实验内容和目的:
掌握几种基本的数据结构:集合、线性结构、树形结构等在求解实际问题中的应用,以及培养书写规范文档的技巧。学习基本的查和排序技术。让我们在实际上机中具有编制相当规模的程序的能力。养成一种良好的程序设计风格。
 
实验教材:
数据结构题集(C语言版) 清华大学出版社二叉树的遍历及应用实验报告  2007
实验项目:
实验一、栈和循环队列
实验内容:
1
    掌握栈的特点(先进后出FILO)及基本操作,如入栈、出栈等,栈的顺序存储结构和链式存储结构,以便在实际问题背景下灵活应用。本程序采用的是链栈结构,具有初始化一个栈、PUSHPOP、显示所有栈里的元素四个功能。
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;