预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10
亲,该文档总共11页,到这已经超出免费预览范围,如果喜欢就直接下载吧~
如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
2010数据结构实验题实验一:以单链表表示集合,设计算法建立先后输入的两个集合的差。说明:已知两个集合A和B,集合A-B中包含所有属于集合A而不属于集合B的元素。步骤:1.首先建立A和B的单链表2.然后对集合B中的每个元素x,在A中查找,若存在和x相同的元素,则从该链表中删除。3.打印A-B,进行验证。#include<stdio.h>typedefstructlinknode{intdata;structlinknode*next;}node;node*creatlist(){node*head,*r,*s;intx;head=(node*)malloc(sizeof(node));r=head;printf("inputintandendwith\n");scanf("%d",&x);while(x!=0){s=(node*)malloc(sizeof(node));s->data=x;r->next=s;s->next=NULL;r=s;scanf("%d",&x);}r->next=NULL;s=head;head=head->next;free(s);return(head);}voidsubs(){node*p,*p1,*p2,*q,*heada,*headb;heada=creatlist();headb=creatlist();p=heada;p1=p;while(p!=NULL){q=headb;while(q->data!=p->data&&q!=NULL)q=q->next;if(q!=NULL){if(p==heada){heada=heada->next;p1=heada;}elseif(p->next==NULL)p1->next=NULL;elsep1->next=p->next;p2=p->next;p->next=NULL;free(p);p=p2;}else{p1=p;p=p->next;}}p=heada;if(p==NULL)printf("kong\n");elseprintf("A-B\n");while(p!=NULL){printf("%d\n",p->data);p=p->next;}}main(){subs();}实验二二叉树(掌握二叉树的链式存储结构、二叉树的遍历方法和带权二叉树的用途。)方案一:二叉树的建立和遍历具体内容:先生成一棵二叉树,再用中序遍历方式打印每个结点值,并统计其叶子结点的个数。操作建议:①二叉树的每个结点请从键盘输入(数据类型自选),边输入边建树。而且每个结点按“左小右大”的原则依次挂接在前一结点后。例如,对于输入序列(12,7,17,11,16,2,13,9,21,4),应以12作为根结点,将7(比12小)链接在12的左边,把17链接在12的右边,11链接在7的左边,…见下图。②二叉树的遍历请用中序遍历方式,边遍历边打印(输出的结点序列会很有趣!),同时统计叶子结点个数,等全部结点数打印完毕后,还要换行打印出你所统计的叶子结点数。实验二二叉树的参考程序参考程序如下:对序列12,7,17,11,16,2,13,9,21,4构成一棵二叉树(按左小右大原则),然后中序遍历输出数据元素序列。解:首先笔算:画出树的形状如下:121721116214913用中序遍历应得到排序结果2,4,7,9,11,12,13,16,17,21然后编程:说明部分为:#include<stdio.h>#include<stdlib.h>typedefstructliuyu{intdata;structliuyu*lchild,*rchild;}test;liuyu*root;intm=sizeof(test);voidinsert_data(intx)/*先生成二叉排序树*/{liuyu*p,*q,*s;s=(test*)malloc(m);s->data=x;s->lchild=NULL;s->rchild=NULL;if(!root){root=s;return;}p=root;while(p)/*如何接入二叉排序树的适当位置*/{q=p;if(p->data==x){printf("dataalreadyexist!\n");return;}elseif(x<p->data)p=p->lchild;elsep=p->rchild;}if(x<q->data)q->lchild=s;elseq->rchild=s;}vo