华中科技大学 数据结构 实验报告

2026/1/27 6:39:29

typedef int status; typedef struct{

char name[10]; char num[20];

}Elemtype;

typedef struct LNode{

Elemtype data; struct LNode *next;

}LNode; 算法设计: 1.IntiaList:

初始化线性表,传入的是头结点地址的地址。释放*L,重新申请一个节点作为表头节点,返回新的指向该表头节点的指针的指针。

2.DestroyList:

销毁头结点中首结点址针指向的线性存储空间,传入的是头结点地址,并且销毁文件。

3.ClearList:

与Destroy类似但是又有不同,ClearList并不销毁物理空间,而是修改逻辑关系值。

4.ListEmpty:

判空功能,判断表是否为空表。传入头结点地址,若头节点的next为空指针,则表空,否则不空。

5.ListLength:

求表长功能,传入头结点地址,每向下取一次节点,计数器自增1,直至为空,此时计数器值为表长。

6.Search:

根据用户所选取的查找关键字进行查找。查找方式为逐节点查找,一旦找到便返回包含该关键字的数据元素的所有信息。

7.ListInset:

插入一个数据元素,传入头结点地址的地址、插入位置i、临时表结点值。在调用插入函数前构造一个临时结点,用于存储数据元素信息。进入插入子函数,插入前先判断插入位置是否合理。先断开所插位置,将临时节点插入。 8.ListDelete:

删除一个数据元素,传入头结点地址的地址、删除位置i。删除前先判断位置是否合理,先删除元素,将删除节点的前继和后继相连,释放删除节点。

23

9.ListMod:

修改一个元素的信息,调用Search来找到所要修改的节点,根据用户要求自行修改,返回头结点地址。 10.ListTrabverse:

传入头结点地址,循环访问各个元素,直至到表尾停止。

3.4 输入输出设计

同实验一相同,此处不再赘述。

3.5 源程序及注释

#include #include #include #include #define LIST_INIT_SIZE 10 #define OK 1 #define FALSE 0 #define TRUE 1 #define ERROR -1 #define OVERFLOW -2 #define LISTINCREMENT 1

/*------------------------------------------------------*/ typedef int status; typedef struct{

char name[10]; char num[20];

}Elemtype;

typedef struct LNode{

Elemtype data; struct LNode *next;

}LNode;

24

int changed=0; char req; LNode *loc;

/*------------------------------------------------------*/ status IntiaList(LNode ** L); status DestroyList(LNode * L); status ClearList(LNode *L); status ListEmpty(LNode *L); int ListLength(LNode *L); status Search(LNode *L); status LinkInsert(LNode *L); status LinkDelete(LNode *L); status LinkMod(LNode *L); status LinkTrabverse(LNode *L);

/*------------------------------------------------------*/ status equal(Elemtype x, Elemtype y);

void display(Elemtype e); void Save(LNode *L); //status Save(LNode* L); status Load(LNode**L); status creat(LNode **L);

/*------------------------------------------------------*/ void menu(void);

/*------------------------------------------------------*/ char file0[20]; int main(void){

int op=0; do{

LNode *L; system(\ menu();

printf(\ req=getchar();getchar(); if (req=='Y' ||req=='y') creat(&L);

25

else {

printf(\ req=getchar(); if (req=='Y' ||req=='y'){ if (Load(&L)==OK) {

puts(\ printf(\ getchar();}

else {printf(\ } else {

printf(\ getchar();getchar();}

}

system(\ menu();

printf(\ Then please input your option[0-12]:\ scanf(\ switch(op){

case 0: break;

case 1: {printf(\ here is IntiaList(),which being

realized\\n\

if (IntiaList(&L)==OK){

printf(\ //printf(\ }

else {

printf(\realised!!Maybe the cause is getchar();getchar();} break;}

overflow\\n\

case 2: {printf(\ here is DestroyList(),which being

26


华中科技大学 数据结构 实验报告.doc 将本文的Word文档下载到电脑
搜索更多关于: 华中科技大学 数据结构 实验报告 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219