"单链表插入删除实验报告及程序源代码"

版权申诉
0 下载量 117 浏览量 更新于2024-02-18 1 收藏 319KB DOC 举报
实验一、单链表的插入和删除 一、目的 本实验的目的是了解和掌握线性表的逻辑构造和链式存储构造,通过实践掌握单链表的基本算法以及相关的时间性能分析。 二、要求 1. 建立一个数据域定义为字符串的单链表,在链表中不允许有重复的字符串。 2. 根据输入的字符串,首先找到相应的结点,然后进行删除操作。 三、程序源代码摘要 以下是实验中使用的单链表的插入和删除的简要源代码: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> // 定义链表结点结构体 typedef struct Node { char data[100]; // 数据域为字符串 struct Node* next; // 指针域 } Node; // 创建链表 Node* createList() { Node* head = (Node*)malloc(sizeof(Node)); head->next = NULL; return head; } // 插入结点 void insertNode(Node* head, char newData[]) { Node* newNode = (Node*)malloc(sizeof(Node)); strcpy(newNode->data, newData); newNode->next = head->next; head->next = newNode; } // 删除结点 void deleteNode(Node* head, char targetData[]) { Node* p = head->next; Node* pre = head; while (p != NULL) { if (strcmp(p->data, targetData) == 0) { pre->next = p->next; free(p); break; } pre = p; p = p->next; } } // 主函数 int main() { Node* list = createList(); insertNode(list, "Hello"); insertNode(list, "World"); deleteNode(list, "Hello"); Node* p = list->next; while (p != NULL) { printf("%s\n", p->data); p = p->next; } return 0; } ``` 以上代码片段实现了一个简单的单链表的插入和删除操作,可以根据输入的字符串进行对应的操作,以达到实验要求。 总结 通过本次实验,我加深了对单链表数据结构的理解,掌握了链表的基本操作算法,例如插入和删除操作。同时,也了解了时间性能分析在算法设计中的重要性,以及如何通过对链表的操作进行优化以提高算法的效率。通过实践加深理论知识的理解,为将来更深入的学习和应用打下了基础。