数据结构综合实验报告10306115王博懿
时间:2026-01-25
时间:2026-01-25
《数据结构与算法》
综合实验报告
系 别: 信息与控制学院 专 业: 软件工程专业
学生姓名: 王 博 懿 指导教师: 李 莹
2011年 11月 21日
沈阳理工大学应用技术学院
实验目的
掌握线性表的建立、插入、删除算法; 掌握查找算法; 掌握排序算法;
实验要求
使用C语言(环境任意)开发程序,能够对用户输入的任意一组数据,建立一个线性表,可以输出此线性表。并且能够对此线性表进行插入、删除、查找、排序等操作。
程序流程
1.打开VC++程序
2.编码线形表的语句,让其能够执行建表,输出,删除,查找,插入,排序.显示主函数,显示选择操作主页面.
3执行输入12345来选择想要执行的语句,重复操作,得到所想要的结果.
代码及运行结果(主要语句要求有注释)
#define NULL 0 宏定义用NULL代替0
typedef struct linknode 定义结构体名 节点类型 {
int data; 将数据成员定义为INT 型
struct linknode *next; 定义数据结构名和指针变量名(指针域) }node;
node *creat(head) 单链表,参数为head 形参) node *head; 声明指针head 指向节点 {
node *currnode,*newnode;声明指针 currnode环绕newnode 指向节点 int x; 定义整形变量
head=(node*)malloc(sizeof(node)); 向系统申请分配链表节点的存储空间 首地址为head currnode=head;赋值给currnodehead do{
scanf("%d",&x);输入变量X
newnode=(node*)malloc(sizeof(node));向系统申请动态的存储空间 首地址为newnode newnode->data=x;newnode 指向第一个节点并赋予x
currnode->next=newnode; currnode指向第一个节点 并赋值为newnode currnode=newnode; 指针向后移 到下一个节点
}while(x!=NULL); 若X 不为空时 循环为0时 导出循环
head=head->next;头指针 向下个节点后移 head由head指向next赋给 currnode->next=NULL; 最后一点的指针域为空 return head; 返回head };
node *head; 声明头节点head void print() 转出函数 {
node *currnode; 声明
currnode=head; 当前指针为head
printf("链表如下....linklist:"); 输出linllist 单链表
while(currnode->data!=NULL) 循环并同时判断指针currnode指向的data值为是否为空 {
printf("%d-->",currnode->data);若不为空 则输出指针的指 currnode=currnode->next;指针currnode 向下一节点后移 };
printf("NULL\n"); 输出空换行
printf("链表长度为........linklist length%d\n",length()); 输出单链表的长度 length 返回至 };
void delete()删除函数 {
int x; 定义整形变量X
node *delnode,*currnode; 声明delnode和currnode指针
printf("输入要删除数据.......input delete data:"); 输出input delete date (输入想删除数据) scanf("%d",&x);输入 整形X
if(head->data==NULL) printf("此链表为空无法删除......this linklist empty!\n"); 判断若头指针为空输出LINKLIST null
if(head->data==x) 判断如果头指针指向的data与X值相同 {
delnode=head; 指针delnode指向头指针 head=head->next;头指针后移 free(delnode);释放指针delnode
if(head==NULL) printf("此链表为空........this linklist enpty!");若head 为null 输出linklist null } else {
currnode=head;否则指针currude指向head
delnode=currnode->next;指针delnode 指向指针currnode 并向下一节点后移 while(delnode->data!=x&&delnode!=NULL) 判断delnode指向data不等于X且不为空 {
currnode=currnode->next;则指针currnode 向下一节点移动 delnode=currnode->next; 指针delnode指向currnode并向后移
};
if(delnode==NULL)如果指针delnide为空
printf("无此数据.......no this data!\n");则直接输出a data is null
else {
currnode->next=delnode->next;否则指针currnode next指向指针delenode到next
个人总结
本次综合实验我的收获很大,平时上课只是听老师讲理论知识,自己很少能够动手去实际操作,这次综合实验就弥补了平时在这方面的欠缺。不仅仅是加强了操作方面,而且使理论知识得到了证实和强化,平时在书本上还有疑问的地方都很好地得到了验证和解决,深化了基础知识的记忆。
综合实验不仅体现一个学生综合能力,
还能检查学生平时对
老师讲课内容的理解程度。因为实验融会了很多以前学过的知识,包括书本上的内容老师上课强调的知识点和老师课下讲解的代码概念。
所以在实验开始时我和同学都认真的复习书上的内容和以前上课老师讲的有关实验代码。
首先,我们复习第二章的线性表,在这章我们知道了 线性表的类型定义,线性表的表示和实现,因为本次试验首先要建立一个线性表所以我们必须了解创建线性表的代码和执行过程
后来,我们有翻阅了许多有关‘输入’‘删除’‘查找’‘插入’‘排序’‘显示主函数’的有关知识。
最后,我们设计了一套本次试验的流程图,每个人都尽自己最大努力争取把本次实验做得完美。
开始实验了,因为每个人的理解和实际操作能力有限,刚开始就遇到了很多困难,后来更是,自己已经大好的代码无法执行,可是大家谦虚向别人询问,查找自己的不足,在自己对代码不理解的地方加以注释,在错误的地方接 …… 此处隐藏:1045字,全部文档内容请下载后查看。喜欢就下载吧 ……
上一篇:H3C交换机忘记了密码怎么解决
下一篇:2011年党支部民主生活会发言稿