数据结构实验报告
湖南师范大学工程与设计学院
数据结构实验报告
姓 名:钟智君 年 级:2013
专 业:计算机科学与技术 学 号:2013180502 任课教师:肖柳明
开课时间:2014~2015学年第一学期
- 1 -
数据结构实验报告
实验(一) 实验时间 2014年11月14日下午1:00—4:00 实验地点 工程与设计学院前栋403 实验题目 线性表的存储及操作 实验目的 1) 掌握顺序存储结构和链式存储结构的特点; 2) 掌握常见算法。 已知两个按元素值有序的线性表A和B,编程实现:将A和B有序归并成一个按元素值有序的线性表。 实验内容 - 2 -
数据结构实验报告
一、算法基本思想:
1) 从键盘输入两个按元素值有序的线性表A和B的值;
2) 根据输入把数据元素分别以顺序存储结构和线性链表存储; 3) 有序归并成一个新的按元素值有序的线性表C; 4) 输出显示合并后的线性表C。 测试数据:A=(3,5,8,11),B=(2,6,8,9,11,15,20) 二、
顺序存储结构: typedef struct{ int elem[100]; int length; int listsize; }SqList; t
链式存储结构:
typedef struct LNode{ int data;
struct LNode *next; }LNode,*LinkList; int create_sq(SqList &a,int n){} int displaya(SqList &a){}
结构定义:
int create_List(LinkList &b,int n){} int displayb(LinkList b){}
void getList_Sq(SqList a,LinkList b,LinkList c){} void getList_Sq1(SqList a,LinkList b,SqList &c){} int display(SqList c){} int displayc(LinkList b){}
- 3 -
数据结构实验报告
int main(int argc, char *argv[]){} 三、
算法描述:
设两个指针分别指向LA表和LB表中某个元素,若设i当前所指元素为a,j当前所指元素为b,则插入LC中元素c=min(a,b)。i和j的初值都为1,在所指元素插入LC后,在LA和LB中顺序后移。
创建顺序表:
int create_sq(SqList &a,int n) {
int num; int i=0;
while(i cin>>num; a.elem[i]=num; a.length=i++; } return 1; } 创建链表 int create_List(LinkList &b,int n) { LNode *q=b; q->next=NULL; LNode *p; for(int i=n;i>0;--i) { int num; p=(LinkList)malloc(sizeof(LNode)); - 4 - 数据结构实验报告 cin>>num; p->data=num; p->next=NULL; q->next=p; q=q->next; } } 有序归并两个表: 顺序存储 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;} - 5 -