C语言实习报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目一线性结构的操作
1.用线性表的顺序存储(数组)保存数据
算法的N-S图或流程图
2.用线性表的链式存储(链表)保存数据
插入:
r
include
#include
typedef struct
{
int num; //学号
char name[10]; //姓名
}student; //定义的抽象元素类型 Elemtype
typedef struct Node /*结点类型定义*/ {
student data;
struct Node *next;
}Node, *LinkList; /* LinkList为结构指针类型*/
static int count; //学生人数
//带头结点的尾插入法创建链表
void insert(LinkList head)
{
LinkList p,q; //p代表的待插元素代入最后一个元素
q=head; //q指向head结点
printf("输入学生人数:");
scanf("%d",&count);
for(int i=0;i { printf("\n输入第%d个学生信息:\n",i+1); p = (LinkList)malloc(sizeof(Node)); //结点p申请一个空间 printf("输入学号:"); scanf("%d",&p->data.num); //输入结点p的数据°学号 printf("\n输入姓名:"); scanf("%s",p->); //输入结点的数据域姓名 name为数组类型数组名为首地址所有此处不需要地Ì址符号 if(i==0) { head->next = p; //i=0 链表中没有元素只有头节点把插入到head 之后 } else { q->next = p; //链表中已有结点元素结点采用尾插入法} q = p; //每插入一个元素就赋值于q q始终指向最后一个元素} p->next = NULL; //设置next域为空 } void print(LinkList head) { LinkList x; //定义一个链表结点 x = head->next ; //该节点指向第一个元素 printf("学生信息如下\n"); while(x) //存在结点 { printf("学号%d 姓名%s\n",x->data.num,x->); //输出该结点的数据域学号和姓名 x = x->next ; //下一个元素 } printf("\n"); } //把链表中的文件信息放入文件中 //写入语句 void savetofile(LinkList head) { FILE*fp; LinkList p; p=head->next; if((fp=fopen("d:\\st2.txt","wb+"))==NULL) { printf("不能打开文件"); return; } while(p) { fprintf(fp,"%d%s\r\n",p->data.num,p->); p=p->next; } printf("\n写入成功\n"); } //功能菜单提示性语句 void menu() { printf("\n0.退出 1.输入 2.输出 3.写入\n"); } void main() { int choice; LinkList l; l = (LinkList)malloc(sizeof(Node)); //头结点申请空间l->next=NULL; //头结点的next为空 menu(); while(1) { scanf("%d",&choice); //输入一个整数 switch(choice) { case 1: insert(l);menu();break; case 2: print(l); menu();break; default: exit(0); } } } 题目二排序 #include"stdio.h" #include "stdlib.h" #include"time.h" #define TRUE 1 #define FALSE 0 typedef int KeyType; typedef int OtherType; #define MAXSIZE 200 /*线性表可能达到的最大长度*/ typedef struct { KeyType key; OtherType other_data; }RecordType; void InsSort(RecordType r[], int length) /* 对记录数组 r 做直接插入排序,length 为数组中待排序记录的数目*/ { int i,j; for (i=2; i<=length; i++) {