当前位置:
文档之家› 川师 数学院 数据结构试验报告资料
川师 数学院 数据结构试验报告资料
}
e=p->data ;
printf("第%d个元素是:%d\n",i,e);
return 1;
}
int Locatelem(Sqlist L,int x)
{
int i=0;
Sqlist p=L->next ;
while(p!=NULL&&p->data !=x)
{
p=p->next ; i++;
}
(2)有序表的合并;
(3)集合的并、交、补运算;
实验准备:
1)计算机设备;2)程序调试环境的准备,如TC环境;3)实验内容的算法分析与代码设计与分析准备。
实验步骤:
1.录入程序代码并进行调试和算法分析;
2.编写实验报告。
实验结果:
//线性链表
#include "malloc.h"
#include "stdio.h"
qu.rear =(qu.rear+1)%QueueSize;
qu.data[qu.rear]=x;
return 1;
}
status DeQueue(SqQueue &qu,char &x)
{
if(qu.rear==qu.front )
return 0;
qu.front =(qu.front +1)%QueueSize;
(2)学会用类C的语言对算法进行描述的方法,将类C算法转换成C源程序的方法和过程;
(3)抽象数据类型的定义和表示、实现;
(4)加深对数据的逻辑结构和物理结构之间关系的理解;
(5)初步建立起时间复杂度和空间复杂度的概念。
实验内容:(类C算法的程序实现)
(1)输入一组数据存入数组中,并将数据元素的个数动态地由输入函数完成。求输入数据的最大值、最小值,并通过函数参数返回所求结果;
{
p=p->next ;j++;
}
printf("在第%d个位置插入数据:%d\n",i,x);
s->next =p->next ; p->next =s;
return 1;
}
int Delelem(Sqlist &L,int i)
{
int j=1;
Sqlist p,q;
p=L;
if(i<1||i>Getlength(L))
r=L;
for(i=0;i<n;i++)
{
s=(Sqlist)malloc(sizeof(Sqlist));
s->data =a[i]; s->next=NULL;
r->next =s ; r =s;
}
}
int Inselem(Sqlist &L,int i,int x)
{
//1、将所建新结点s的next域指向p的下一结点:s->next=p->next
for(i=0;i<size;i++)
{
printf("pArray[%d]= ",i);
scanf("%d",&pArray[i]);
}
return *pArray;
}
int Compare()
{
int x,y,i;
x=y=p[0];
for(i=0;i<size;i++)
{
if(x>=p[i]) x=p[i];
}
}
void CreatlistR(Sqlist &L,int a[],int n)//尾插法
{
//将新结点插到当前链表表尾,为此必须新增一个尾指针r,使其始终指向当前链表的尾结点
Sqlist s,r;
int i;
L=(Sqlist)malloc(sizeof(Sqlist));
L->next =NULL;
case 2: printf("按尾插法建立线性表:\n");input(Array,M);CreatlistR(L,Array,M);break;
}
printf("原线性表数据为:\n");Displist(L);
Getelem(L,3); Locatelem(L,2);
Inselem(L,5,5);
{
int i=0;
Sqlist p=L->next ;
while(p!=NULL)
{
i++; p=p->next;
}
return i;
}
int Getelem(Sqlist L,int i)
{
int j=1,e;
Sqlist p=L->next;
while(j<i)
{
p=p->next ; j++;
#defineห้องสมุดไป่ตู้M 6
typedef struct node
{
int data;
struct node *next;
}*Sqlist;
void Initlialize(Sqlist &L)
{
L=(Sqlist)malloc(sizeof(Sqlist));
L->next =NULL;
}
int Getlength(Sqlist L)
}
实验结果:
实验二线性表及其基本操作实验(2学时)
实验目的:
(1)熟练掌握线性表ADT和相关算法描述、基本程序实现结构;
(2)以线性表的基本操作为基础实现相应的程序;
(3)掌握线性表的顺序存储结构和动态存储结构之区分。
实验内容:(类C算法的程序实现,任选其一。具体要求参见教学实验大纲)
(1)一元多项式运算的C语言程序实现(加法必做,其它选做);
}
int input_size()
{
printf("please input the size:\n");
printf("size= ");
scanf("%d",&size);
return 0;
}
int input_data()
{
printf("please input the value:\n");
return 0;
while(j<i)
{
p=p->next ; j++;
}
q=p->next ;
p->next =q->next ;
free(q);
return 1;
}
void Displist(Sqlist L)
{
Sqlist p=L->next ;
while(p!=NULL)
{
printf("%d\t",p->data);
3.编写实验报告。
实验结果://动态分配数组空间
#include "stdio.h"
#include "malloc.h"
int size,i;
int *pArray;
int *p;
void malloc_size()
{
pArray=(int *)malloc(size*(sizeof(int)));
实验内容:(类C算法的程序实现,任选其一)
(1)设计与实现基本的堆栈和队列结构下的各种操作(如堆栈的PUSH、POP等操作)(必做);
(2)以表达式计算为例,完成一个可以进行算术表达式计算功能的算法设计与实现(选做);
实验准备:
1)计算机设备;2)程序调试环境的准备,如TC环境;3)实验内容的算法分析与代码设计与分析准备。
p=p->next ;
}
printf(“\n”);
}
void input(int *pArray,int n)
{
printf("请输入数组数据(共含%d个元):\n",n);
for(int i=0;i<n;i++)
Scanf(“%d”,&pArray[i]);
int main(int argc, char* argv[])
pArray++;
}
printf("\n");
return *pArray;
}
void paixu()
{
int x=0;
int i,j;
printf("later of paixu:\n");
for(i=0;i<size;i++)
{
for(j=i+1;j<size;j++)
{
if(p[i]>=p[j])
{
x=p[i];p[i]=p[j];p[j]=x;
}
}
printf("%d\t",p[i]);
}
printf("\n");
}
void main()
{
clrscr();
input_size();
malloc_size();
input_data();
Output_data();
Compare();
paixu();
实验准备:
1)计算机设备;2)程序调试环境的准备,如TC环境;3)实验内容的算法分析与代码设计与分析准备。