数据结构实验报告内容及格式(1)参考

上传人:新** 文档编号:562085159 上传时间:2024-03-06 格式:DOC 页数:13 大小:42.50KB
返回 下载 相关 举报
数据结构实验报告内容及格式(1)参考_第1页
第1页 / 共13页
数据结构实验报告内容及格式(1)参考_第2页
第2页 / 共13页
数据结构实验报告内容及格式(1)参考_第3页
第3页 / 共13页
数据结构实验报告内容及格式(1)参考_第4页
第4页 / 共13页
数据结构实验报告内容及格式(1)参考_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《数据结构实验报告内容及格式(1)参考》由会员分享,可在线阅读,更多相关《数据结构实验报告内容及格式(1)参考(13页珍藏版)》请在金锄头文库上搜索。

1、实验一 线性表顺序存储与操作1 实验目的编写程序建立顺序存储的线性表L,其数据元素按非递减有序排列,插入一个元素X后,该线性表L仍保持有序。2 实验内容/* 2005-03-04 - 实验内容: 编写程序建立顺序存储的线性表L,其数据元素按非递减有序排列,插入一个 元素X后,该线性表L仍保持有序。 实验要求: L的存储结构为: #define LIST_INIT_SIZE 100 / 顺序表存储空间的初分配量 #define LISTINCREMENT 10 / 顺序表存储空间的分配增量 struct /线性表的结构int *elem; /存储空间的基地址int length; /当前的长度i

2、nt listsize; /当前分配的容量; 测试数据: 建立: 1,3,5,7,9 插入: x=-1,6,10 -*/#include#include#include#include#define LIST_INIT_SIZE 100 / 顺序表存储空间的初分配量#define LISTINCREMENT 10 / 顺序表存储空间的分配增量typedef struct /线性表的结构int *elem; /存储空间的基地址int length; /当前的长度int listsize; /当前分配的容量SQLIST;void Create(SQLIST &L) /建立线性表L.elem =(i

3、nt*)malloc(LIST_INIT_SIZE* sizeof(int);if(!L.elem)printf(为线性表分配空间失败!);L.length =0;L.listsize =LIST_INIT_SIZE; void Insert(SQLIST &A,int x) /实现有序的插入操作if(A.length =A.listsize) printf(线性表错误!);if(x A.elemA.length-1)A.elemA.length=x; /与最大的元素进行判断,以决定是否插在最后elseint i=0;while(x = A.elemi) i+; /从第一个元素起,寻找正确的插

4、入位置for(int j=A.length; j=i; j-)A.elemj+1=A.elemj; /将所找位置后面的所有数据都向右移动一个位置A.elemi=x; /插入新的数据A.length+; /顺序表的长度加1void main()printf(程序说明:n);printf( 建立顺序存储的单链表,其数据元素按元素值非递减有序排列,插入一个数据元素后,该线性表仍保持有序nn);SQLIST s;Create(s); /为线性表分配空间s.elem0=1; /建表s.elem1=3;s.elem2=5;s.elem3=7;s.elem4=9;s.length=5;printf(nn已建

5、立的顺序表为:n);for(int i=0; is.length; i+)printf(%d ,s.elemi);printf(nn请输入要插入的数据:n );int tmp;scanf(%d,&tmp);Insert(s,tmp); printf(nn插入数据后的顺序表为:n);for(i=0; is.length; i+)printf(%d ,s.elemi);_getch(); /如果不加如该句,则执行用Visual C+编译后的exe文件,控制台窗口会一闪而过,看不请执行结果:)3实验结果4实验总结与分析实验二 线性表链式存储与操作1 实验目的掌握线性表的基本操作,插入、删除、查找,以

6、及线性表合并等运算在链接存储结构上的运算。2 实验内容#include#include#include#include #include #define ERROR 0#define OK 1#define EQUAL 1#define OVERFLOW -1#define LIST_INIT_SIZE 100#define LISTINCREMENT 10struct STU线性表的结构 char name20; char stuno10; int age; int score;stu50;typedef struct STU ElemType;struct LNODE ElemType d

7、ata; struct LNODE *next;typedef struct LNODE LNode;typedef struct LNODE *LinkList;int init(LinkList *L)建表 *L=(LNode *)malloc(sizeof(LNode); if(!L) exit(ERROR); (*L)-next=NULL; return OK;/*init */int ListLength(LinkList L)返回数据元素个数 int j=0; while (L-next) L=L-next; j+; return j;int GetElem(LinkList L,

8、int i,ElemType *e)用e返回L中第i值 LinkList p; int j; p=L-next;j=1; while(p&jnext;+j; if(!p|j1) return ERROR; *e=p-data; return OK;int EqualList(ElemType *e1,ElemType *e2)比较 if (strcmp(e1-name,e2-name)=0) return 1; else return 0;int Less_EqualList(ElemType *e1,ElemType *e2) if (strcmp(e1-name,e2-name)next)

9、 p=p-next; if(EqualList(&p-data,&e) return 1; return 0;break; default:break; return 0;void MergeList(LinkList La,LinkList Lb,LinkList *Lc)合并表 LinkList pa,pb,pc; pa=La-next;pb=Lb-next; *Lc=pc=La; while(pa & pb) if(Less_EqualList(&pa-data,&pb-data) pc-next=pa;pc=pa;pa=pa-next; else pc-next=pb;pc=pb;pb

10、=pb-next; pc-next=pa?pa:pb; free(Lb);释放表Lbvoid printlist(LinkList L)输出表/ int i; LinkList p; p=L; printf(name stuno age scoren); while(p-next) p=p-next; printf(%-10s %st%dt%dn, p-data.name, p-data.stuno, p-data.age, p-data.score); printf(n);int ListInsert(LinkList L,int i,ElemType e)插入信息 LinkList p,s

11、; int j; p=L;j=0; while(p&jnext; +j; if(!p|ji-1) return ERROR; s=(LinkList)malloc(sizeof(LNode); s-data=e; s-next=p-next; p-next=s; return OK;/*ListInsert Before i */int main() struct STU e; LinkList La,Lb,Lc; system(cls) ;清屏 printf(nn-List Demo is running.-nn); printf(First is InsertList function.n); init(&La); strcpy(e.name,stu1); strcpy(e.stuno,100001); e.age=80; e.score=1000; ListInsert(La,1,e);插入信息1

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号