• 大小: 9KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-12
  • 语言: C/C++
  • 标签: l链表  c语言  

资源简介

首先,逐行读取指定文件中的数据,并进行解析后保存在链表中。其中,文件中每行数据格式为“学号,姓名,年龄”,比如“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 };

评论

共有 条评论