资源简介
首先,逐行读取指定文件中的数据,并进行解析后保存在顺序表中。其中,文件中每行数据格式为“学号,姓名,年龄”,比如“SA10225048,[yyw1] 张三,24”。
(提示:采用顺序表结构时,顺序表中每个表元素包含三类信息:学号,姓名,和年龄;采用单链表结构时,单链表中每个结点的数据域包含三类信息:学号,姓名,和年龄。)
再,根据键盘输入进行相关操作(查找,删除和插入)。比如,若键盘输入为“P3”,则表示打印出第3项的信息(注意:采用顺序表结构时,第3项数据对应下标为2的表元素;采用单链表结构时,第3项数据对应链表中第3个结点的信息;);若键盘输入为“D3”,则表示删除第3个表元素;
代码片段和文件信息
#include “pch.h“
#include
#include
#include
#include
#define filename “C:\\Users\\lenovo\\source\\repos\\linearlist\\Lab1test.DAT“
#define list_init_size 100 //线性表存储空间的初始分配量
#define LISTINCREMENT 10 //线性表存储空间的分配增量
typedef int Status;
typedef struct
{
char id[11]; //多1个char是结束符
char name[20];
char age[3];
}ElemType;
typedef struct
{
ElemType *elem;
int length; //当前长度
int listsize; //当前分配的存储容量,sizeof(Elemtype)为单位
}Sqlist;
void InitList_Sq(Sqlist *L) {
//构造一个空的线性表L
L->elem = (ElemType *)malloc(list_init_size * sizeof(ElemType));
if (!L->elem) exit(-1); //存储分配失败
L->length = 0; //空表长度为0
L->listsize = list_init_size; //初始存储容量
}//Initlist_Sq
Status ListInsert_Sq(Sqlist *L int i ElemType e) {
//在顺序线性表L中下标为i的位置插入新的元素e,
//i的合法值为0<=i<=ListLength_Sq(L)-1
ElemType *p *q *newbase; //定义指针
if (i<0 || i>L->length) {
//printf(“插入位置不合理“);
return 0;
}//i值不合法
if (L->length >= L->listsize) { //当前存储空间已满,增加分配
newbase = (ElemType *)realloc(L->elem (L->listsize + LISTINCREMENT) * sizeof(ElemType));
if (!newbase) {
//printf(“分配空间失败“);
exit(-1);
}//存储分配失败
L->elem = newbase; //新基址
L->listsize += LISTINCREMENT; //增加存储容量
}
for (int j = L->length; j > i; j--)
L->elem[j] = L->elem[j - 1];
L->elem[i] = e;
L->length++;
return 0;
}//ListInsert_Sq
Status DeleteList_Sq(Sqlist *L int i)
{
// 删除顺序表下标为i的元素
//ElemType *p *q ;
if (L == NULL)
return 0;
if (i < 0 || i > L->length - 1)
return 0;
for (int j = i; j < L->length - 1; j++)
L->elem[j] = L->elem[j + 1];
L->length--;
return 0;
}
void Outputall_Sq(Sqlist *L)
{
int i;
for (i = 0; i <= L->length - 1; i++) {
//printf(“%d “ i + 1);
printf(“%s %s %s\n“ L->elem[i].id L->elem[i].name L->elem[i].age);
}
}
void Outputline_Sq(Sqlist *L int i)
{
//删除下标为i的元素
printf(“%s %s %s\n“ L->elem[i].id L->elem[i].name L->elem[i].age);
}
void FiletoSqlist(Sqlist *L)
{
FILE *fp;
errno_t err;
err = fopen_s(&fp filename “r“); //fopen_s打开成功返回0,失败返回非0
char ch;
if (err != 0) { //是否打开成功判断,必须加
printf(“Cant‘t open file“);
exit(0);
}
char sztest[1000] = { 0 };
int len = 0ij=0;
while (!feof(fp)) {
ElemType e = {0};
- 上一篇:相机曝光增益时间控制代码
- 下一篇:实用算法实验_链表
相关资源
- C++中头文件与源文件的作用详解
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- 个人日常财务管理系统(C语言)
- c语言电子商务系统
- 小甲鱼C语言课件 源代码
- 将图片转换为C语言数组的程序
- C语言实现的一个内存泄漏检测程序
- DES加密算法C语言实现
- LINUX下命令行界面的C语言细胞游戏
- 用单片机控制蜂鸣器播放旋律程序(
- 学校超市选址问题(数据结构C语言版
- 电子时钟 有C语言程序,PROTEUS仿真图
- 尚观培训linux许巍老师关于c语言的课
- 算符优先语法分析器(C语言编写)
- 基于C语言的密码锁程序
评论
共有 条评论