c语言程序报告数据结构怎么写,C语言数据结构实验报告.docx

本科实验报告

课程名称: 数据结构(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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个文件里包含了数据结构的所有的程序的实现,都是本人亲自出来并在vs下调通了,绝对没有问题,绝对可以通过老师的检查。这些程序都是本人在数据结构的课程设计的时候的,主要的内容是 1、顺序表的建立插入删除查找 链表的建立插入删除查找 (包括顺序实现和链式实现) 2、栈的建立插入删除查找 队列的建立插入删除查找 (包括顺序实现和链式实现) 3、串——改进后的KMP 4、稀疏矩阵——三元组转置和乘法 5、二叉树遍历、哈夫曼树的建立 6、图的遍历、连通分量和强连通分量、关节点、最小生成树、拓扑排序、关键路径(prim和kruscal算法)、最短路径(有dijstra和floyd算法) 7、折半查找、二叉排序树、平衡二叉树、散列函数 8、插入排序、折半插入、冒泡排序、快速排序、简单选择、堆排序、二路归并排序 另外还有一些测试数据在里面,大家可以试试。 数据结构真的是很重要很重要,这么课要是没有学好,那就不算是计算机系的学生,而且数据结构很重要的就是要理解好那些经典的算法,在以后我们的实践中你会发现,基本上的问题都可以归结为那些经典问题,纳闷只要我们掌握了那些经典问题的经典算法,融会贯通的应用,拿在什么情况下都是游刃有余的。 希望对大家有所帮助,并且希望能够大家能支持支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值