文档详情

晓庄-数据结构(C语言版)实验报告讲解.doc

发布:2017-04-19约1.87万字共30页下载文档
文本预览下载声明
数据结构(C语言版) 实验报告 学院 信息工程学院 班级 15计科2班 学号 姓名 张旭 指导教师 曹晨 实验一 线性表基本操作和简单程序 1. 实验目的 (1)复习Visual C++ 6.0上机调试程序的基本方法及C语言编程; (2)掌握线性表的基本操作:初始化、插入、删除、取数据元素等运算在链表存储结构上的程序设计方法。 2. 实验要求 (1) 认真阅读和掌握和本实验相关的教材内容。 (2) 分别以头插法和尾插法建立两个数据域定义为整型的升序单链表,再将这两个有序链表合并成一个新的无重复元素的有序链表,最后可以根据输入的数据,先找到相应的结点,后删除之。 (3) 上机运行程序。 (4) 保存和打印出程序的运行结果,并结合程序进行分析。 3. 程序代码 #includestdio.h #includestdlib.h typedef struct node{ int data; struct node *next; }node; node * qbuild(node *first) { int i,n,a[100]; node *s; printf(输入n:); scanf(%d,n); first=(node*)malloc(sizeof(node)); first-next=NULL; for(i=0;in;i++) { s=(node*)malloc(sizeof(node)); printf(输入a[%d]:,i); scanf(%d,a[i]); s-data=a[i]; s-next=first-next; first-next=s; } return first; } node * hbuild(node *first) { int i,n,a[100]; struct node *s,*r; printf(输入n:); scanf(%d,n); first=(node*)malloc(sizeof(node)); r=first; for(i=0;in;i++) { s=(node*)malloc(sizeof(node)); printf(输入a[%d]:,i); scanf(%d,a[i]); s-data=a[i]; r-next=s; r=s; } r-next=NULL; return first; } node * hebing(node *La,node *Lb) { node *pa,*pb,*pc,*Lc; pa=La-next; pb=Lb-next; Lc=pc=La; while(pa pb) { if(pa-data pb-data){ pc-next =pa; pc=pa; pa=pa-next ; } else if(pa-data pb-data){ pc-next =pb; pc=pb; pb=pb-next; } else{ pc-next =pa; pc=pa; pa=pa-next ; pb=pb-next ; } } pc-next =pa?pa:pb; free(Lb); return Lc; } node * shanchu(node *first,int i) { node *p,*q; p=first-next; while(p) { if((p-next )-data==i) { q=p-next ; p-next =q-next; free(q); break; } p=p-next; } return first; } void display(node *first) { struct node *p; p=first-next; while(p!=NULL) { printf(%d ,p-data); p=p-next; } printf(\n); } int main() { int m; struct node *a,*b
显示全部
相似文档