资源描述:
《数据结构(C语言版)实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数据结构(C语言版)实验报告学院计算机科学与技术专业*****学号****班级****姓名***指导教师****实验1实验题目:单链表的插入和删除实验目的:了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时间性能分析。实验要求:建立一个数据域定义为字符串的单链表,在链表中不允许有重复的字符串;根据输入的字符串,先找到相应的结点,后删除之。实验主要步骤:1、分析、理解给出的示例程序。2、调试程序,并设计输入数据(如:bat,cat,eat,fat,hat,jat,lat,mat,#),测试程序的如下功能:不允许重复字符串的插入;根据输
2、入的字符串,找到相应的结点并删除。3、修改程序:(1)增加插入结点的功能。(2)将建立链表的方法改为头插入法。程序代码:#include"stdio.h"#include"string.h"#include"stdlib.h"#include"ctype.h"typedefstructnode//定义结点{chardata[10];//结点的数据域为字符串structnode*next;//结点的指针域}ListNode;typedefListNode*LinkList;//自定义LinkList单链表类型LinkListCreatListR1();//
3、函数,用尾插入法建立带头结点的单链表LinkListCreatList(void);//函数,用头插入法建立带头结点的单链表ListNode*LocateNode();//函数,按值查找结点voidDeleteList();//函数,删除指定值的结点voidprintlist();//函数,打印链表中的所有值voidDeleteAll();//函数,删除所有结点,释放内存ListNode*AddNode();//修改程序:增加节点。用头插法,返回头指针//==========主函数==============voidmain(){charch[10],n
4、um[5];LinkListhead;head=CreatList();//用头插入法建立单链表,返回头指针printlist(head);//遍历链表输出其值printf("Deletenode(y/n):");//输入"y"或"n"去选择是否删除结点scanf("%s",num);if(strcmp(num,"y")==0
5、
6、strcmp(num,"Y")==0){printf("PleaseinputDelete_data:");scanf("%s",ch);//输入要删除的字符串DeleteList(head,ch);printlist(head
7、);}printf("Addnode?(y/n):");//输入"y"或"n"去选择是否增加结点scanf("%s",num);if(strcmp(num,"y")==0
8、
9、strcmp(num,"Y")==0){head=AddNode(head);}printlist(head);DeleteAll(head);//删除所有结点,释放内存}//==========用尾插入法建立带头结点的单链表===========LinkListCreatListR1(void){charch[10];LinkListhead=(LinkList)malloc(si
10、zeof(ListNode));//生成头结点ListNode*s,*r,*pp;r=head;r->next=NULL;printf("Input#toend");//输入"#"代表输入结束printf("PleaseinputNode_data:");scanf("%s",ch);//输入各结点的字符串while(strcmp(ch,"#")!=0){pp=LocateNode(head,ch);//按值查找结点,返回结点指针if(pp==NULL){//没有重复的字符串,插入到链表中s=(ListNode*)malloc(sizeof(List
11、Node));strcpy(s->data,ch);r->next=s;r=s;r->next=NULL;}printf("Input#toend");printf("PleaseinputNode_data:");scanf("%s",ch);}returnhead;//返回头指针}//==========用头插入法建立带头结点的单链表===========LinkListCreatList(void){charch[100];LinkListhead,p;head=(LinkList)malloc(sizeof(ListNode));head->ne
12、xt=NULL;while(1){printf("Input#toend");p