ADT 笔记
1. ADT
ADT={E,R,P} 元素,关系,操作
SET={E}
抽象数据类型是由多个元素组成的集合,因此元素有名称,由元素组成的集合也需要有一个名称。
同样,元素、集合分别有各自的名称,同样有各自的数据结构。
其中操作就需要对元素、集合有各自的操作。
- 班级/学生:class={student}
- 书包/书: bag/book
- 书架/书: shelf/book
- 钱包/钱: wallet/money
- 教室/课桌:classroom/desk
- 宿舍/学生:dormitory/student
2. ADT 结构定义
#define BOOKNAMESIZE 100
#define MAX 1000
#define FALSE 0
#define TRUE 1
//=======================================
// 基于数组的结构定义
//=======================================
// 书本信息结构
struct book
{
char name[BOOKNAMESIZE];
char writer[30];
float price;
int pages;
};
typedef struct book Book;
Book bk1;
Book *pk;
//书包结构
struct bag
{
Book books[MAX];
int num;
};
typedef struct bag Bag;
//书架结构
struct bookshelf
{
Book books[MAX];
int num;
};
typedef struct bookshelf BookShelf;
//=======================================
// 基于指针的结构定义
//=======================================
// 书的双链结构
struct book
{
char name[BOOKNAMESIZE];
char writer[30];
float price;
int pages;
struct book *next;//指向后一本书
struct book *last;//指向前一本书
};
typedef struct book Book;
// 书包 对于书采用头指针定义
struct bag
{
Book *head;
int num;
};
typedef struct bag Bag;
// 书架
struct bookshelf
{
Book *books;
int num;
};
// 采用常规变量定义名称 head
struct bookshelf
{
Book *head;
int num;
};
typedef struct bookshelf BookShelf;
3. 操作
两种操作:集合的、元素的
对集合的操作: 初始化 \销毁的
Init(Bag *bg); //初始
Destro(Bag *bg); //释放
isEmpty(Bag bg); //是否空书包
isFull(Bag bg); //书包是否满
clear(Bag *bg); //清空书包
对元素的操作:
add(Bag *bg,Book *bk);
append(Bag *bg,Book *bk£©
insert(Bag *bg,Book *bk,int location);
delete(Bag *bg,Book *bk);
delete(Bag *bg,char *bkname);
find
count
find&replace
代码示例:
struct bag
{
Book books[MAX];
int num;
};
struct bag
{
Book *head;
int num;
};
int init(Bag *bg)
{
bg=malloc(sizeof(Bag));
if(bg==NULL) return FALSE;
bg->num=0;
return TRUE;
}
//直接释放Bag指针
destory1(Bag *bg)
{
free(bg);
bg= NULL;
}
//查找Bag指针中是否存在元素,将其释放,
destory2(Bag *bg)
{
Book *bk ,*tmp;
bk=bg->head;
while(bk!= NULL)
{
tmp=bk->next;
free(bk);
bk=tmp;
}
free(bg);
bg= NULL;
}
理解抽象数据类型(ADT):结构与操作
本文笔记介绍了抽象数据类型(ADT)的概念,包括ADT的组成(元素、关系和操作),并通过示例展示了如何定义结构(如基于数组和指针的结构)以及ADT的操作,如集合的初始化、销毁、判断空和满,以及元素的添加、插入、删除等。
282

被折叠的 条评论
为什么被折叠?



