实验12

2019-02-15 13:36

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 #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;inext=p;

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


实验12.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:鄂教版六年级科学第四单元表格式导学案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: