C语言程序设计实验报告
实验12、链表文件程序设计
班级 2013155 学号 201315510 姓名 刘涛
【实验目的】
(1)掌握链表的概念、定义和使用;
(2)掌握链表中结点的建立、插入、删除方法;
【实验内容及步骤】
1、下列程序中,子函数insertup(head,newp)实现将一个newp所指新结点按升序插入到由头指针head所指的链表中的适当位置;请将函数补充完整,并编写主程序;
【程序代码】: struct member {int num;
struct member *next; };
typedef struct member Member;
insertup(Member *head, Member *newp) {Member *pre,*suc; pre=head;
suc=head->next; while (suc!=NULL)
{if (suc->num >=newp->num) break ; pre=suc;
suc=suc->next; }
pre->next=newp ; newp->next=suc ; }
void main() { printf(\请输入一组按升序排列的数,以0作为输入结束的标志:\\n\
1
Member *pt; Member p; pt=creat(); printf(\请输入要插入的结点:\\n\ scanf(\ insertup(pt,&p); print(pt); }
【运行结果】
2、编写一个程序,实现如下功能: (1)将5个学生的信息(包括学号、姓名、成绩三项信息)写入到file1中。
(2)从file1中读出5个学生的信息,按成绩自高到低排序,排序后的结果写入到文件file2中。
【程序代码】
2
【运行结果】
3
[选做]
25个人围成一个圈,从第1个人开始顺序报号,凡报号为3和3的倍数者退出圈子,找出最后留在圈子中的人原来的序号。
要求:用链表实现。报到3或3的倍数的结点删除; 提示:(1)需要将链表首尾相接形成环形; (2)删除时注意头、尾结点的特殊处理; (3)注意循环结束的条件;
【程序代码】
#include
#define LEN sizeof(struct student) struct student { int sno; char name[20]; char sex[2]; int age; struct student *next; }
stu[20];
void dele(struct student *head) { int i,len,iage,flag=1,find=0; struct student *p,*pt; while(flag==1) { printf(\请输入学生的人数:\ scanf(\ if(len<=20) flag=0; } for(i=0;i
4
pt=p;
printf(\学号:\ scanf(\ printf(\姓名:\ scanf(\ printf(\性别:\ scanf(\ printf(\年龄:\ scanf(\}
p->next=NULL; p=head;
printf(\请输入要删除的年龄:\scanf(\pt=head; p=pt;
if(pt->age==iage) {
p=pt->next; head=p=pt; find=1; }
else
pt=pt->next; while(pt!=NULL) {
if(pt->age==iage) {
p->next=pt->next; find=1; } else
p=pt; pt=p->next; }
if(!find)
printf(\没有找到该年龄\p=head;
5
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库实验12在线全文阅读。
相关推荐: