C语言链表实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
链表实验报告
一、实验名称
链表操作的实现--学生信息库的构建
二、实验目的
(1)理解单链表的存储结构及基本操作的定义
(2)掌握单链表存储基本操作
(3)学会设计实验数据验证程序
【实验仪器及环境】计算机 Window XP操作系统
三、实验内容
1、建立一个学生成绩信息(学号,姓名,成绩)的单链表,按学号排序
2、对链表进行插入、删除、遍历、修改操作。
3、对链表进行读取(读文件)、存储(写文件)
四、实验要求
(1)给出终结报告(包括设计过程,程序)-打印版
(2)对程序进行答辩
五、实验过程、详细内容
1、概念及过程中需要调用的函数
(1)链表的概念结点定义
结构的递归定义
struct stud_node{
int num;
char name[20];
int score;
struct stud_node *next;
};
(2)链表的建立
1、手动输入
struct stud_node*Create_Stu_Doc()
{
struct stud_node *head,*p;
int num,score;
char name[20];
int size=sizeof(struct stud_node);
【链表建立流程图】
2、从文件中直接获取 先建立一个
(3)链表的遍历
(4
(5)删除结点
(6)动态储存分配函数malloc () void *malloc(unsigned size)
①在内存的动态存储区中分配一连续空间,其长度为size
②若申请成功,则返回一个指向所分配内存空间的起始地址的指针 ③若申请不成功,则返回NULL (值为0) ④返回值类型:(void *) ·通用指针的一个重要用途
·将malloc 的返回值转换到特定指针类型,赋给一个指针
【链表建立流程图】
ptr
ptr
ptr->num
ptr->score ptr=ptr->next
head pt r
s s->next = ptr->next ptr->next = s 先连后断 ptr2=ptr1->next
ptr1->next=ptr2->next
free (ptr2)
(7)动态储存释放函数free()
当某个动态分配的存储块不再用时,要及时将它释放
void free(void *ptr)
释放由动态存储分配函数申请到的整块内存空间,ptr为指向要释放空间的首地址。
(8)链表写入文件
(9)链表的读取
六、实验总结
链表弥补了许多数组的缺点,例如,
1、数组在添加新元素时,如果添加的位置是数组的首部或者数组中间,那么我们必须设计算法移动相关元素,并且涉及到许多相关元素;
2、删除元素时,如果删除的不是尾部元素,同样会移动其他元素。
因此使用数组处理大量元素时,会影响程序的整体效率。
但是链表在搜索或随机读写内部元素的时远不如数组操作起来方便。
计算机1403班
李彦霖
1416010319