资源简介
首先,逐行读取指定文件中的数据,并进行解析后保存在顺序表中。其中,文件中每行数据格式为“学号,姓名,年龄”,比如“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语言代码ATM管理系统
- 数据结构c语言版期末考试复习题库
- 用c语言编写ATM取款机模拟系统
- 信息安全原理大数四则运算及DH算法
- 单片机接收数据帧帧头帧尾校验数据
- 非标设备接入GB28181平台C语言代码实现
- 用c语言写的8数码游戏
- 算法精解-C语言描述源代码
- codeblocks-17.12mingw-setup网盘
- 尚观教育李慧芹Linux下C语言前嵌入式
- 华中科技大学C语言实验报告
- 基于Linux C语言的多线程模拟智能家具
- c语言实现二维码生成
- 二维码驱动C语言
- 禁忌搜索算法C语言程序
- C++语言程序设计 郑莉 第四版 课后题
- C语言课程设计报告-图书管理系统.z
- booth算法C语言实现
- 电梯模拟C语言数据结构中国地质大学
- CVSD解码c语言代码
- 黑白棋游戏c语言代码
- 学生成绩管理系统v1.0
- c语言综合程序--ATM机
- STM32F3 LCD1602 I2C驱动代码 C语言
- 加速度积分求速度和位移的c语言算法
- 博弈树树的c实现
- 模糊控制算法的c语言实现
- 清华 严蔚敏 《数据结构(c语言版)
评论
共有 条评论