本科实验报告
课程名称:数据结构(C语言版)
实验项目:线性表、树、图、查找、内排序实验地点:明向校区实验楼208
专业班级:学号:
学生姓名:
指导教师:***
2019 年 1 月10日
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define OK 1
typedef struct{//项的表示,多项式的项作为LinkList的数据元素float coef;//系数
int expn;//指数
}term,ElemType;
typedef struct LNode{ //单链表节点结构
ElemType data;
struct LNode *next;
}LNode, *LinkList;
typedef LinkList polynomial;
int CreatLinkList(polynomial &P,int n){ //创建多项式P = (polynomial)malloc(sizeof(LNode));
polynomial q=P;
q->next=NULL;
polynomial s;
for(int i = 0; i < n; i++){
s = (polynomial)malloc(sizeof(LNode));
scanf("%f%d",&(s->data.coef),&(s->data.expn));
q->next = s;
s->next = NULL;
q=q->next;
}
return OK;
}
运行结果
2.
void PrintfPolyn(polynomial P){
polynomial q;
for(q=P->next;q;q=q->next){
if(q->data.coef!=1)
printf("%g",q->data.coef);
free(Pb);
}
int main(void){
int a,b;
polynomial Pa,Pb,Pc;
printf("分别输入多项式A和多项式B的元素个数:");
scanf("%d%d",&a,&b);
printf("输入多项式A:");
CreatLinkList(Pa,a);
printf("输入多项式B:");
CreatLinkList(Pb,b);
CreatLinkList(Pc,0);
printf("A(x) = ");
PrintfPolyn(Pa);
printf("B(x) = ");
PrintfPolyn(Pb);
AddPolyn(Pa,Pb,Pc);
printf("C(x) = ");
PrintfPolyn(Pc);
return 0;
}
运行结果
遇到的问题和解决方法
对线性表的基本操作不熟悉,查找课本,多次运用,加深理解,以便能够将各种操作及其应用运用到程序中。
心得体会
不能只看课本,要自己动手写程序,在实践中加深理解。
return 1;
return Leaf(T->lchild)+Leaf(T->rchild);
}
int main(){
BiTree T; //declaration
printf("\n输入树: \n");
//用例:ABD..EH...CF.I..G..\n
CreateBiTree(T); //创建
printf("\n叶子结点树为: ");
int n=Leaf(T);
printf("%d\n",n);
return 0;
}
运行结果
遇到的问题和解决方法
对递归理解不够到位,写关于递归的算法有困难。
通过查找资料,请教同学解决问题。
心得体会
要培养自己的动手实践能力。
}
int main(void)
{
int e,n;
BiTree T=NULL,f,p;
printf("输入长度:");
scanf("%d",&n);
printf("输入关键字:");
while(n--)
{
scanf("%d",&e);
InsertBST(T, e);
}
printf("输入要查找元素:");
scanf("%d",&e);
if(SearchBST(T,e,f,p)) printf("查找成功\n");
else printf("查找失败\n");
return 0;
}
运行结果
2.
#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define OVERFLOW -1
#define LIST_INIT_SIZE 100 //顺序表初始分配量#define LISTINCREMENT 10 //分配增量
typedef int KeyType;
typedef struct{//元素结构
KeyType key; //主键
//…//其他
}SElemType;
KeyType key = 23; //关键字
printf("key=%d \t pos=%d\n", key, Search_Bin(ST, key,1,(sizeof(value))/(sizeof(SElemType))));
//折半查找
key = 58;
printf("key=%d \t pos=%d\n", key, Search_Bin(ST, key,1,(sizeof(value))/(sizeof(SElemType))));
//折半查找
}
运行结果
遇到的问题和解决方法
不熟悉树的存储结构和有关算法的实现。
心得体会
要多看课本掌握基本知识。
遇到的问题和解决方法
对插入过程和算法不熟悉,程序的细节方面处理不到位。
心得体会
要多看课本,理解知识,多动手写程序。