数据结构实验报告
q->data=a.elem[k]; p->next=q; p=q;
p->next=NULL; k++; } return; }
void getList_Sq1(SqList a,LinkList b,SqList &c) {
int k=0,i=0;
while(b!=NULL||kb->data) {
c.elem[i++]=b->data; c.length=i-1; b=b->next; } else {
c.elem[i++]=a.elem[k++]; c.length=i-1; }
while(b!=NULL) {c.elem[i++]=b->data; b=b->next; c.length=i-1;} while(k
- 11 -
数据结构实验报告
c.elem[i++]=a.elem[k++]; k++; c.length=i-1; } return; } int display(SqList c) {
int i=0;
cout< cout< cout< int displayc(LinkList b) { cout< cout< cout< int main(int argc, char *argv[]) - 12 - 数据结构实验报告 { SqList a; LNode *b=(LinkList)malloc(sizeof(LNode)); int n,m,l; cout<<\请输入a中的数据个数\ cin>>n; cout<<\请创建a中的数据\ create_sq(a,n); displaya(a); cout<<\请输入b中的数据个数\ cin>>m; cout<<\请创建b中的数据\ create_List(b,m); displayb(b->next); cout<<\请选择你想C要用的存放类型:\ cout<<\数字1,类型为链式存取,数字2为顺序存储,其他错误\ cin>>l; if(l==1) { LinkList c=(LinkList)malloc(sizeof(LNode)); getList_Sq(a,b->next,c); displayc(c->next); } else if(l==2) { SqList c; getList_Sq1(a,b->next,c); display(c); } else cout<<\输入错误\ - 13 - 数据结构实验报告 system(\ return EXIT_SUCCESS; } 五、 运行结果: 2 3 5 6 8 8 9 11 11 15 20 六、 分析与总结: - 14 - 数据结构实验报告 1,顺序存储结构和链式存储结构有所不同,顺序存储结构是在一组连续的地址中进行存储,而链式存储结构则是通过NEXT域找到下一个元素,因此,在定义两种结构时应该区分开来。包括后面的DISPLAY显示函数也要区分开来。 2,在创建两种线性表时,也要注意使数据停止输入的条件. 3,顺序存储结构和链式存储结构不能直接合并,因为两种结构有所不同,所以在编写程序过程中,要把顺序存储结构转化链式存储结构,如果是这种转换方式就需要将C定义为链式存储结构,如果将链式存储结构转化为顺序存储结构,则需要将C定义为顺序存储结构。 4,这是数据结构第一个实验,也是我第一次入手编数据结构的程序。在此实验中,两输入的线性表必须得元素非递减排序,得出来的合并表才会是非递减的。其实这个程序还不完善,必须再加上排序。两种存储方法中,顺序存储结构所需空间开销更大,所以链式存储结构更合理。 - 15 - 数据结构实验报告 - 16 -