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