数据结构课程设计报告
- 格式:docx
- 大小:37.70 KB
- 文档页数:7
数据结构课程设计报告
数据结构是计算机科学中必不可少的基础课程之一。在这门课程中,我们需要学习并掌握各种不同的数据结构及其应用。而课程设计报告则是对我们所学知识的一个检验和运用。
设计题目
在课程设计中,我们被分配了一个题目,需要我们使用已经学过的数据结构来实现。我们的题目是:实现一个简单的通讯录,可以添加、删除、查找和编辑联系人的信息。
需求分析
在开始设计之前,我们需要先对需求进行分析。对于一个通讯录来说,我们需要包含以下基本信息:姓名、电话、地址和性别。因此我们可以设计一个结构体来存储每个联系人的信息。
typedef struct contact {
char name[20];
char phone[12]; char address[100];
char sex[3];
} Contact;
其次,我们需要一个动态数组来存储联系人信息。这个动态数组需要支持添加、删除和编辑操作。在实际设计中,我们可以使用链表来实现这个动态数组。
typedef struct list {
Contact data;
struct list *next;
} List;
设计过程
在数据结构的学习中,我们已经学习了很多种不同的数据结构。因此,在这个课程设计中,我们可以运用我们所学的不同数据结构来实现这个通讯录。
在通讯录通常都需要查找联系人信息。我们需要设计一个函数来实现查找操作。在链表中查找数据需要遍历整个链表。因此,我们可以使用二分查找来加快查找速度。
void SearchContact(List *head, char *find_name) {
List *p = head->next;
while(p != NULL && strcmp(find_name, p->) != 0) {
p = p->next;
}
if(p != NULL) {
printf("%-8s%-13s%-25s%-6s\n", p->, p->data.phone, p->data.address, p->data.sex);
} else {
printf("查无此人!\n");
}
}
除了查找功能,我们还需要实现添加、删除和编辑联系人信息。在链表中添加和删除联系人需要注意指针的变化。具体实现可以参考下面的代码:
void AddContact(List *head, Contact data) {
List *p, *temp;
temp = (List*)malloc(sizeof(List));
temp->data = data;
temp->next = NULL;
p = head;
while(p->next != NULL) {
p = p->next;
}
p->next = temp;
}
void DeleteContact(List *head, char *del_name) {
List *p = head->next;
List *q = head; while(p != NULL && strcmp(del_name, p->) != 0) {
q = p;
p = p->next;
}
if(p != NULL) {
q->next = p->next;
free(p);
} else {
printf("查无此人!\n");
}
}
void EditContact(List *head, char *edit_name) {
List *p = head->next;
while(p != NULL && strcmp(edit_name, p->) != 0) {
p = p->next;
}
if(p != NULL) { printf("请输入新的联系人电话号码:");
scanf("%s", p->data.phone);
printf("请输入新的联系人地址:");
scanf("%s", p->data.address);
printf("请输入新的联系人性别:");
scanf("%s", p->data.sex);
} else {
printf("查无此人!\n");
}
}
测试结果
在我们设计实现完之后,我们需要进行测试来检查程序是否正确。我们在程序中添加几个联系人,然后进行查找和删除操作,最后再对一个联系人进行编辑操作。
在我的测试结果中,程序可以正确地进行查找和删除操作,同时也能正确地对联系人信息进行编辑。这表明我们所选择的数据结构和算法都正确地实现了所需的功能。
结论
通过本次数据结构课程设计,我深刻地认识到了数据结构的实际应用。同时,在实现中也锻炼了我的编程能力。我相信,在今后的学习和工作中,所学的数据结构知识会对我有很大的帮助。