本科实验报告
课程名称: 数据结构(C语言版)
实验项目: 线性结构(1)
实验地点: 太原理工大学(明向校区)
专业班级: 软件1426 学号: 2014006281
学生姓名: 李 鹏
指导教师: 王 庆 生
2015年12月23日
实验一 线性表
一、实验目的和要求
本次实习的主要目的是为了使学生熟练掌握线性表的基本操作在顺序存储结构和链式存储结构上的实现,提高分析和解决问题的能力。要求仔细阅读并理解下列例题,上机通过,并观察其结果,然后独立完成后面的实习题。
二、实验内容和原理
选作实习题1:
[问题描述]
设顺序表A中的数据元素递增有序,试写一程序,将x插入到顺序表的适当位置上,使该表仍然有序。
[输入]
已经利用随机产生的方法,产生一个递增有序数列,每次产生不同的数列,然后再产生一个随机数插入的该数列的合适位置,仍然保持有序,避免输入的繁琐。
[输出]
已建立的顺序表A中,产生的随机数,插入随机数后的顺序表A。
[存储结构]
采用线性表的顺序存储结构。
[算法的基本思想]
建立线性表,然后初始化,建立结点,随机产生一列结点中int型数据域(这里产生了9个),利用从后比较,然后插入到合适位置,打印已排列好的结点数据域,最后产生一个随机数并赋值结点数据域,进行插入,打印插入后的各结点数据域。
三、主要仪器设备
使用的计算机:硬件配置、软件环境(Microsoft Visual Studio 2013)
四、操作方法与实验步骤
选作实习题1:(编写源代码如下,添加备注,便于老师批改)
// Ex1-1.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include
#include
#include
#define testLength 10
#define LIST_INIT_SIZE 100
#define LISTBASICLENGTH 10
#define OK 1
#define ERROR 0
#define OVERFLOW 0
typedef struct ListNode{
int x;
}ListNode;
typedef struct SqList{
ListNode *pBasic;
int length;
int listsize;
}SqList;
int ListInit_Sq(SqList &L){
L.pBasic = (ListNode*)malloc(LIST_INIT_SIZE*sizeof(ListNode));
if (!L.pBasic)
exit(OVERFLOW);
L.length = 0;
L.listsize = LIST_INIT_SIZE;
return OK;
}
int ListInsert_Sq(SqList &L, ListNode e){
ListNode *newbase = NULL;
int i = 0;
if (L.length == 0){
L.pBasic[0] = e;
}
else{
if (L.length >= L.listsize){
newbase = (ListNode*)realloc(L.pBasic, (L.listsize + LISTBASICLENGTH)*sizeof(ListNode));
if (!newbase){
printf("newbase is NULL!");
exit(OVERFLOW);
}
L.pBasic = newbase;
L.listsize += LISTBASICLENGTH;
}
for (i = L.length - 1; L.pBasic[i].x > e.x&&i >= 0; i--)//进行插入到合适位置
L.pBasic[i + 1] = L.pBasic[i];
L.pBasic[i + 1] = e;
}
L.length++;
return OK;
}
void Output(SqList L){
int i;
for (i = 0; i
printf("%4d", L.pBasic[i].x);
printf("\n");
}
int _tmai