1 / 24
文档名称:

数据结构实验3_99XXX.doc

格式:doc   页数:24页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据结构实验3_99XXX.doc

上传人:xxj16588 2016/7/3 文件大小:0 KB

下载得到文件列表

数据结构实验3_99XXX.doc

相关文档

文档介绍

文档介绍:《数据结构》实验报告实验序号: 3实验项目名称:链式表的操作学号姓名 pmj 专业、班实验地点实验楼 1指导教师实验时间周五一、实验目的及要求 ; 。二、实验设备(环境)及要求微型计算机; windows 操作系统; Microsoft Visual Studio 集成开发环境。三、实验内容与步骤 : #include"" #include"" #include"" #include"" typedef struct node // 定义结点{ char data[10]; // 结点的数据域为字符串 struct node *next; // 结点的指针域}ListNode; typedef ListNode * LinkList; // 自定义 LinkList 单链表类型 LinkList CreatListR1(); // 函数,用尾插入法建立带头结点的单链表 ListNode *LocateNode(LinkList head, char *key); // 函数,按值查找结点 void DeleteList(LinkList head,char *key); // 函数,删除指定值的结点 void printlist(LinkList head); // 函数,打印链表中的所有值 void DeleteAll(LinkList head); // 函数,删除所有结点,释放内存//========== 主函数============== void main() { char *ch,*num; num=new char; ch=new char[10]; LinkList head; head=CreatListR1(); // 用尾插入法建立单链表,返回头指针 printlist(head); // 遍历链表输出其值 printf(" Delete node (y/n):"); // 输入"y" 或"n" 去选择是否删除结点 scanf("%s",num); if(strcmp(num,"y")==0 || strcmp(num,"Y")==0){ printf("Please input Delete_data:"); scanf("%s",ch); // 输入要删除的字符串 DeleteList(head,ch); printlist(head); } DeleteAll(head); // 删除所有结点,释放内存} //========== 用尾插入法建立带头结点的单链表=========== LinkList CreatListR1(void) { char *ch; ch=new char[10]; LinkList head=(LinkList)malloc(sizeof(ListNode)); // 生成头结点 ListNode *s,*r,*pp; r=head; r->next=NULL; printf("Input # to end "); // 输入"#" 代表输入结束 printf("Please input Node_data:"); scanf("%s",ch); // 输入各结点的字符串 while(strcmp(ch,"#")!=0) { s=(ListNode *)malloc(sizeof(ListNode)); strcpy(s->data,ch); r->next=s; r=s; r->next=NULL; printf("Input # to end "); printf("Please input Node_data:"); scanf("%s",ch); } return head; // 返回头指针} //========== 按值查找结点,找到则返回该结点的位置,否则返回 NULL========== ListNode *LocateNode(LinkList head, char *key) { ListNode *p=head->next; // 从开始结点比较 while(strcmp(p->data,key)!=0 && p) // 直到 p为 NULL 或 p-> data 为 key 止 p=p->next; // 扫描下一个结点 return p; //若 p=NULL 则查找失败,否则 p 指向找到的值为 key 的结点} //========== 删除带头结点的单链表中的指定结点======= void DeleteList(LinkList head,char *key