資源簡介
首先,逐行讀取指定文件中的數(shù)據(jù),并進行解析后保存在順序表中。其中,文件中每行數(shù)據(jù)格式為“學號,姓名,年齡”,比如“SA10225048,[yyw1] 張三,24”。
(提示:采用順序表結(jié)構(gòu)時,順序表中每個表元素包含三類信息:學號,姓名,和年齡;采用單鏈表結(jié)構(gòu)時,單鏈表中每個結(jié)點的數(shù)據(jù)域包含三類信息:學號,姓名,和年齡。)
再,根據(jù)鍵盤輸入進行相關(guān)操作(查找,刪除和插入)。比如,若鍵盤輸入為“P3”,則表示打印出第3項的信息(注意:采用順序表結(jié)構(gòu)時,第3項數(shù)據(jù)對應下標為2的表元素;采用單鏈表結(jié)構(gòu)時,第3項數(shù)據(jù)對應鏈表中第3個結(jié)點的信息;);若鍵盤輸入為“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是結(jié)束符
char?name[20];
char?age[3];
}ElemType;
typedef?struct
{
ElemType?*elem;
int?length; //當前長度
int?listsize; //當前分配的存儲容量,sizeof(Elemtype)為單位
}Sqlist;
void?InitList_Sq(Sqlist?*L)?{
//構(gòu)造一個空的線性表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?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};
- 上一篇:相機曝光增益時間控制代碼
- 下一篇:實用算法實驗_鏈表
評論
共有 條評論