数据结构课程设计报告

  • 格式: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");

}

}

测试结果

在我们设计实现完之后,我们需要进行测试来检查程序是否正确。我们在程序中添加几个联系人,然后进行查找和删除操作,最后再对一个联系人进行编辑操作。

在我的测试结果中,程序可以正确地进行查找和删除操作,同时也能正确地对联系人信息进行编辑。这表明我们所选择的数据结构和算法都正确地实现了所需的功能。

结论

通过本次数据结构课程设计,我深刻地认识到了数据结构的实际应用。同时,在实现中也锻炼了我的编程能力。我相信,在今后的学习和工作中,所学的数据结构知识会对我有很大的帮助。