资源简介
首先,逐行读取指定文件中的数据,并进行解析后保存在链表中。其中,文件中每行数据格式为“学号,姓名,年龄”,比如“SA10225048,[yyw1] 张三,24”。
再,根据键盘输入进行相关操作(查找,删除和插入)。比如,若键盘输入为“P3”,则表示打印出第3项的信息(注意:采用顺序表结构时,第3项数据对应下标为2的表元素;采用单链表结构时,第3项数据对应链表中第3个结点的信息;);若键盘输入为“D3”,则表示删除第3个表元素;若键盘输入为“I3,SA10225038,张四,24”,则表示在第3项前插入一个学生的信息(SA10225038,张四,24)。
代码片段和文件信息
#include “pch.h“
#include
#include
#include
#include
#define MAXSIZE 20
#define OK 1
#define ERROR 0
#define filename “C:\\Users\\lenovo\\source\\repos\\linearlist\\Lab1test.DAT“
typedef struct
{
char id[11]; //多1个char是结束符
char name[20];
char age[3];
}ElemType;
typedef int Status;
//单链表的存储结构
typedef struct LNode {
ElemType data; //数据域
struct LNode *next; //指针域
}LNode *linkList;
linkList linkListInit()
{
LNode *L;
L = (LNode *)malloc(sizeof(LNode));
if (L == NULL)
{
printf(“申请内存空间失败.“);
}
L->next = NULL;
return L;
}
Status GetElem(linkList L int i ElemType *e) {
linkList p;
int j;
p = L->next;
j = 1;
while (p && j < i) {
p = p->next;
++j;
}
if (!p || j > i) {
return ERROR;
}
*e = p->data;
printf(“%s %s %s“ e->id e->name e->age);
return OK;
}
linkList ListInsert(linkList L int i ElemType e) {
LNode *p;
int j = 0;
p = L;
while (p && j < i - 1) {
p = p->next;
++j;
}
if (!p || j > i - 1) {
return ERROR;
}
linkList s;
s = (linkList)malloc(sizeof(LNode));
s->data = e;
s->next = p->next;
p->next = s;
return L;
}
void linkListShow(linkList L)
{
linkList temp;
int i = 0;
for (i = 1 temp = L->next; temp != NULL; i++ temp = temp->next)
printf(“%s %s %s\n“ temp->data.id temp->data.name temp->data.age);
}
void linkListShowi(linkList L int n) {
linkList temp = L;
int i;
for (i = 0; i < n; i++) {
temp = temp->next;
}
printf(“%s %s %s\n“ temp->data.id temp->data.name temp->data.age);
}
Status ListDelete(linkList L int n) {
linkList p = L;
int j = 0;
while (p && j < n - 1) {
p = p->next;
++j;
}
if (!(p->next) || j > n - 1) {
return ERROR;
}
linkList q;
q = p->next;
p->next = q->next;
free(q);
return OK;
}
void FiletoSqlist(linkList &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 = 0 i j = 1;
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语言实现
评论
共有 条评论