1、数据结构(C 语言版)实验报告 计 084 班 安徽工业大学计算机学院- 1 -姓名: 学号: 班级: 计 084 班指导教师: 数据结构(C 语言版)实验报告 计 084 班 安徽工业大学计算机学院- 2 -实验一 线性表基本操作的实现一、 实验目的1、 掌握使用 Turbo C2.0 上机调试线性表的基本方法;2、 掌握线性表的基本操作:插入、删除、查找等运算在顺序存储结构和链式存储结构上的运算。二、实验要求1、 链表插入、删除和查找算法的代码;2、 程序运行结果及分析;3、 实验总结。三、实验内容1、 认真阅读和掌握本实验的参考程序。2、 上机运行本程序,并完善删除、查找等运算。3、 保
2、存程序的运行结果,并结合程序进行分析。4、 按照你对链表操作需要,重新改写算法并运行,实现链表的插入、删除、查找等运算,并保存运行结果。四、程序流程图、算法及运行结果1-1#include “stdio.h“#include “stdlib.h“#define MAXSIZE 100struct SeqListint dataMAXSIZE;int length;typedef struct SeqList *PSeqList;PSeqList creaeNullList_seq()PSeqList palist=(PSeqList)malloc(sizeof(struct SeqList);
3、if(palist!=NULL)palist-length=0;return(palist);printf(“Out of space!n“);return NULL;int isNullList_seq(PSeqList palist)return (palist-length=0);int insertPre_seq(PSeqList palist,int p,int x)数据结构(C 语言版)实验报告 计 084 班 安徽工业大学计算机学院- 3 -int q;if(palist-length=MAXSIZE)printf(“overflow!n“);return(0);if(ppali
4、st-length)printf(“Not exist!n“);return(0);if(isNullList_seq(palist)palist-data0=x;palist-length=1;return(1);for(q=palist-length-1;q=p;q-)palist-dataq+1=palist-dataq ;palist-datap=x;palist-length= palist-length+1;return(1);void main()int i;PSeqList list;list=creaeNullList_seq();printf(“插入前的顺序表为:n “);
5、for(i=0;idatai);insertPre_seq(list,5,55);printf(“n 插入后的顺序表为:n “);for(i=0;ilength;i+)printf(“ %d “ , list-datai);printf(“n“);getch();数据结构(C 语言版)实验报告 计 084 班 安徽工业大学计算机学院- 4 -1-2#include “stdio.h“#include “stdlib.h“#define MAXSIZE 100struct SeqListint dataMAXSIZE;int length;typedef struct SeqList *PSeq
6、List;PSeqList creaeNullList_seq()PSeqList palist=(PSeqList)malloc(sizeof(struct SeqList);if(palist!=NULL)palist-length=0;return(palist);printf(“Out of space!n“);return NULL;int isNullList_seq(PSeqList palist)return (palist-length=0);/* 插入 */int insertPre_seq(PSeqList palist,int p,int x)int q;if(pali
7、st-length=MAXSIZE)printf(“overflow!n“);return(0);数据结构(C 语言版)实验报告 计 084 班 安徽工业大学计算机学院- 5 -if(ppalist-length)printf(“Not exist!n“);return(0);if(isNullList_seq(palist)palist-data0=x;palist-length=1;return(1);for(q=palist-length-1;q=p;q-)palist-dataq+1=palist-dataq ;palist-datap=x;palist-length= palist-
8、length+1;return(1);/* 删除 */int deletePre_seq(PSeqList palist, int i)int j;if (!palist) printf(“表不存在“);return(-1); if(i palist - length) printf (“删除位置不合法“);return(0); for(j=i;j length;j+)palist -dataj-1= palist -dataj;palist - length -;return (1); /* 检索 ElementType */int locationPre_seq(PSeqList pali
9、st,int x)int i=0;if (!palist) 数据结构(C 语言版)实验报告 计 084 班 安徽工业大学计算机学院- 6 -printf(“表不存在“);return(-1); while (ilength if (i=palist- length) return 0;else return (i + 1); void main()int i;PSeqList list;list=creaeNullList_seq();printf(“插入前的顺序表为:n “);for(i=0;idatai);insertPre_seq(list,5,55);printf(“n插入后的顺序表为
10、:n “);for(i=0;ilength;i+)printf(“ %d “ , list-datai);printf(“n“);printf(“删除前的顺序表为:n “);for(i=0;idatai);deletePre_seq(list, 5);printf(“n删除后的顺序表为:n “);for(i=0;idatai);printf(“n“);if(locationPre_seq(list,9)=0)printf(“检索的内容不存在!“);数据结构(C 语言版)实验报告 计 084 班 安徽工业大学计算机学院- 7 -if(locationPre_seq(list,9)!=0print
11、f(“n“);getch();实验二 栈的基本操作一、 实验目的掌握栈的基本操作:初始化栈、判栈为空、出栈、入栈等运算。二、实验要求1 认真阅读和掌握本实验的算法。2 上机将本算法实现。 3 保存程序的运行结果,并结合程序进行分析。三、实验内容利用栈的基本操作实现将任意一个十进制整数转化为 R 进制整数算法为:1、定义栈的顺序存取结构2、分别定义栈的基本操作(初始化栈、判栈为空、出栈、入栈等)3、定义一个函数用来实现上面问题:(1)十进制整数 X 和 R 作为形参(2)初始化栈(3)只要 X 不为 0 重复做下列动作将 X % R 入栈, X=X/R(4)只要栈不为空重复做下列动作栈顶出栈 ,
12、 输出栈顶元素四、程序流程图、算法及运行结果2-1#include #include #include #define stack_init_size 100数据结构(C 语言版)实验报告 计 084 班 安徽工业大学计算机学院- 8 -#define stackincrement 10typedef struct sqstackint *base;int *top;int stacksize; sqstack;int StackInit(sqstack *s)s-base=(int *)malloc(stack_init_size *sizeof(int);if(!s-base)return
13、 0;s-top=s-base;s-stacksize=stack_init_size;return 1;int Push(sqstack *s,int e)if(s-top-s-base=s-stacksize)s-base=(int *)realloc(s-base,(s-stacksize+stackincrement)*sizeof(int);if(!s-base)return 0;s-top=s-base+s-stacksize;s-stacksize+=stackincrement;*(s-top+)=e;return e;int Pop(sqstack *s,int e)if(s
14、-top=s-base)return 0;e=*-s-top;return e;int stackempty(sqstack *s)if(s-top=s-base)数据结构(C 语言版)实验报告 计 084 班 安徽工业大学计算机学院- 9 -return 1;elsereturn 0;int conversion(sqstack *s)int n,e=0,flag=0;printf(“输入要转化的十进制数:n“);scanf(“%d“,printf(“要转化为多少进制:2 进制、8 进制、16 进制 填数字!n“);scanf(“%d“,printf(“将十进制数%d 转化为%d 进制是:n
15、“,n,flag);while(n)Push(s,n%flag);n=n/flag;while(!stackempty(s)e=Pop(s,e);switch(e)case 10: printf(“A“);break;case 11: printf(“B“);break;case 12: printf(“C“);break;case 13: printf(“D“);break;case 14: printf(“E“);break;case 15: printf(“F“);break;default: printf(“%d“,e);printf(“n“);return 0;数据结构(C 语言版)
16、实验报告 计 084 班 安徽工业大学计算机学院- 10 -int main()sqstack s;StackInit(conversion(return 0;2-2#include#define MAXSIZE 100struct stackint dataMAXSIZE;int top;void init(struct stack *s)s-top=-1;int empty(struct stack *s)if(s-top=-1) return 1;else return 0;void push(struct stack *s,int i)if(s-top=MAXSIZE-1)printf(“Stack is full.n“);return;
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。