《数据结构》 实验报告(附实例) ---实验一 线性表的基本操作实现(五篇范例)

时间:2019-05-12 07:17:18下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《《数据结构》 实验报告(附实例) ---实验一 线性表的基本操作实现》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《《数据结构》 实验报告(附实例) ---实验一 线性表的基本操作实现》。

第一篇:《数据结构》 实验报告(附实例) ---实验一 线性表的基本操作实现

实验 一 线性表的基本操作实现及其应用

一、实验目的

1、熟练掌握线性表的基本操作在两种存储结构上的实现,其中以熟悉各种链表的操作为重点。

2、巩固高级语言程序设计方法与技术,会用线性链表解决简单的实际问题。

二、实验内容

1、单链表的表示与操作实现(*)

2、约瑟夫环问题

3、Dr.Kong的艺术品

三、实验要求

1、按照数据结构实验任务书,提前做好实验预习与准备工作。

2、加“*”题目必做,其他题目任选;多选者并且保质保量完成适当加分。

3、严格按照数据结构实验报告模板和规范,及时完成实验报告。

四、实验步骤

(说明:依据实验内容分别说明实验程序中用到的数据类型的定义、主程序的流程以及每个操作(成员函数)的伪码算法、函数实现、程序编码、调试与分析、总结、附流程图与主要代码)

㈠、数据结构与核心算法的设计描述

(程序中每个模块或函数应加注释,说明函数功能、入口及出口参数)

1、单链表的结点类型定义

/* 定义DataType为int类型 */ typedef int DataType;

/* 单链表的结点类型 */ typedef struct LNode { DataType data;struct LNode *next;}LNode,*LinkedList;

2、初始化单链表

LinkedList LinkedListInit(){ // 每个模块或函数应加注释,说明函数功能、入口及出口参数 }

3、清空单链表

void LinkedListClear(LinkedList L){// 每个模块或函数应加注释,说明函数功能、入口及出口参数}

4、检查单链表是否为空

int LinkedListEmpty(LinkedList L){ ….}

5、遍历单链表 void LinkedListTraverse(LinkedList L){ ….}

6、求单链表的长度

int LinkedListLength(LinkedList L){ ….}

7、从单链表表中查找元素

LinkedList LinkedListGet(LinkedList L,int i){ //L是带头结点的链表的头指针,返回第 i 个元素 }

8、从单链表表中查找与给定元素值相同的元素在链表中的位置

LinkedList LinkedListLocate(LinkedList L, DataType x){ …… }

9、向单链表中插入元素

void LinkedListInsert(LinkedList L,int i,DataType x){ // L 为带头结点的单链表的头指针,本算法 // 在链表中第i 个结点之前插入新的元素 x }

10、从单链表中删除元素

void LinkedListDel(LinkedList L,DataType x){ // 删除以 L 为头指针的单链表中第 i 个结点 }

11、用尾插法建立单链表

LinkedList LinkedListCreat(){ …… } ㈡、函数调用及主函数设计

(可用函数的调用关系图说明)㈢ 程序调试及运行结果分析 ㈣ 实验总结

五、主要算法流程图及程序清单

1、主要算法流程图:

2、程序清单

(程序过长,可附主要部分)

说明:以后每次实验报告均按此格式书写。

我在布置实验室时,仅给出实验名称、实验目的、实验内容及相关数据结构。

题目一程序参考框架 # include # include # include # include # include /* 定义ElemType为int类型 */ typedef int ElemType;#define TRUE 1 #define FALSE 0 #define NULL 0 #define flag-1

/* 单链表的结点类型 */ typedef struct LNode {ElemType data;struct LNode *next;} LNode,*LinkedList;

/* 初始化单链表 */ LinkedList LinkedListInit(){ } /* 清空单链表 */ void LinkedListClear(LinkedList L){ } /* 检查单链表是否为空 */ int LinkedListEmpty(LinkedList L){ } /* 遍历单链表 */ void LinkedListTraverse(LinkedList L){ } int LinkedListLength(LinkedList L){ } LinkedList LinkedListGet(LinkedList L, int i){ } LinkedList LinkedListLocate(LinkedList L, ElemType x){ }

void LinkedListInsert(LinkedList L, int i, ElemType x){LinkedList pre,p,s;int j;pre=L;j=1;p=L->next;while(pre&&jnext;j++;} if(pre==NULL){printf(“给的i值超过了表长”);exit(0);} s=(LNode *)malloc(sizeof(LNode));s->data=x;pre->next=s;s->next=p;}

void LinkedListDel(LinkedList L,ElemType x){ LinkedList pre,p;int j;pre=L;j=1;p=L->next;while(p&&p->data!=x){pre=p;p=p->next;j++;} if(p==NULL){printf(“表中没有值为x的结点”);exit(0);} pre->next=p->next;free(p);}

LinkedList LinkedListCreat(){ LinkedList L=LinkedListInit(),p,r;ElemType x;r=L;printf(“please input data,input-1 is endn”);scanf(“%d”,&x);while(x!=flag){p=(LinkedList)malloc(sizeof(LNode));p->data=x;r->next=p;r=p;scanf(“%d”,&x);} r->next=NULL;return L;}

int scan(){int d;printf(“please input the operationn”);printf(“1.初始化 2.清空3.求链表长度4.检查链表是否为空n”);printf(“5.检查链表是否为满 6.遍历链表 7.从链表中查找元素n”);printf(“8.从链表中查找与给定元素值相同的元素在顺序表中的位置n”);printf(“9.向链表中插入元素10.从链表中删除元素n”);printf(“其他键退出。。。n”);scanf(“%d”,&d);return(d);}

main(){int quit=0;int i;ElemType e;LinkedList L;while(!quit)switch(scan()){case 1: ….;break;case 2: ….;break;case 3: ….;break;case 4: ….;break;case 5:LinkedListTraverse(L);break;case 6: ….;break;case 7: ….;break;case 8: ….;break;case 9: ….;break;case 10: ….;break;default: quit=1;} return 0;}

第二篇:数据结构--实验报告 线性表的基本操作

}(一)单链表的基本操作

#include using namespace std;#define true 1 #define false 0 #define ok 1 #define error 0 #define overflow-2 typedef int Status;typedef int ElemType;typedef struct LNode //存储结构 { ElemType data;struct LNode *next;}LNode,*LinkList;void CreateList(LinkList &L,int n)//尾插法创建单链表 { LinkList p;L=new LNode;L->next=NULL;//建立一个带头结点的单链表

LinkList q=L;//使q指向表尾

} Status GetElem(LinkList L,int i,ElemType &e)//取第i个元素 { LinkList p=L->next;int j=1;while(p&&jnext;++j;} for(int i=1;i<=n;i++){ p=new LNode;

cin>>p->data;p->next=NULL;q->next=p;q=p;} if(!p||j>i)return error;//第i个元素不存在

e=p->data;return ok;} Status LinkInsert(LinkList &L,int i,ElemType e)//插入 { LinkList p=L;int j=0;while(p&&jnext;++j;} //寻找第i-1个结点 if(!p||j>i-1)return error;//i小于1或者大于表长加1 LinkList s=new LNode;//生成新结点

s->data=e;s->next=p->next;//插入L中

p->next=s;return ok;}

Status ListDelete(LinkList &L,int i,ElemType &e)// 删除 { LinkList p=L;LinkList q;int j=0;while(p->next&&j

p=p->next;++j;} if(!(p->next)||j>i-1)return error;//删除位置不合理

q=p->next;p->next=q->next;//删除并释放结点

e=q->data;delete(q);return ok;

} void MergeList(LinkList &La,LinkList &Lb,LinkList &Lc){ //合并两个顺序链表

LinkList pa,pc,pb;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

{ pc->next=pb;

pc=pb;

pb=pb->next;} } pc->next=pa?pa:pb;delete(Lb);} void show(LinkList L)//{ LinkList p;p=L->next;while(p){ cout<

data<<“-->”;p=p->next;} cout<next;while(p){ ++i;

显示 表长 3

p=p->next;} return i;} void xiugai(LinkList L)//修改 { int i,j=1;ElemType k;ElemType e,m;LinkList p=L->next;cout<<“请输入要修改的元素位置(0>i;GetElem(L,i,e);cout<<“该位置的元素:”<>k;while(p&&jnext;++j;} m=p->data;p->data=k;cout<<“修改后的单链表显示如下:”<>a;cout<<“请输入第一个有序链表的元素共(”<>b;cout<<“请输入第二个有序链表的元素共(”<>select;switch(select){ case 1:cout<<“请输入单链表的长度:”<

cin>>x;

cout<<“请输入”<

CreateList(list,x);break;case 2: cout<<“单链表显示如下:”<

show(list);break;case 3: int s;cout<<“单链表的长度为:”<>x;while(x<0||x>Length(list,s)){ cout<<“输入有误,请重新输入”<>x;} GetElem(list,x,y);cout<<“该位置的元素为:”<>x;while(x<0||x>Length(list,s)){ cout<<“输入有误,请重新输入”<>x;} cout<<“要插入的元素值:”;cin>>y;LinkInsert(list,x,y);cout<<“插入后单链表显示如下:”<>x;while(x<0||x>Length(list,s)){ cout<<“输入有误,请重新输入”<>x;} cout<<“要删除的元素值:”<

ListDelete(list,x,y);

} break;case 8: hebing();break;case 9: exit(0);break;default : cout<<“输入有误,请重新输入”<

四、测试结果 1)顺序表 的测试结果

8 2)单链表的测试结果

五、心得体会

当听到老师说写数据结构实验报告时,我有点惊讶,才学了不到一个月,就要写实验报告。记得去年学习C++时,学了一个学期,程序设计用了三周,才完成的,这个实验报告居然要一周完成两个设计,觉得很难。但是现在一周过去了,我也写完了,自我感觉良好。

通过这次写实验报告,我深切的理解了这门课的本质。刚开始学这门课时,当时还不清楚这门课程的目的,现在,我真正的理解了:数据结构像是身体的骨骼,而C++是填充这骨骼的肉体,二者相结合才能使整个程序更加完整,健全。数据结构是个框架,模型,抽象数据类型中列举了各种操作,而所用的C++语言,将各种操作描述出来构成算法。数据结构+算法=程序设计。

在这次设计的过程中,我还遇到了,很多的问题。顺序表是按顺序存储的,用了一维数组来存储,又结合C++的程序设计,我又用了类,但是,在执行时出现了问题。后来问同学,指出我的错误,不过获益不少。我又重新整理思路,把顺序表的基本操作写好了。虽然走了很多弯路,但是让我认识到,一定要创新,大胆,不能按照旧的思路去干新的事情。

单链表写起来简单多了,这个很快就搞定了。但是细节上出了问题。比如说,有些变量的重复定义,有些变量又没有定义,在调用函数,就直接复制过来,没有改参数……通过修改,我深刻理解到:细节决定成败,在以后,不管做任何事情都要认真,细心。

这次的实验报告,让我受益匪浅,不仅有知识方面的,还有生活和精神上的。总之,我会继续我的兴趣编程,相信在编程的过程中,能不断的提高自己。

第三篇:嵌入式linux基本操作实验一的实验报告

实验一linux基本操作实验的实验报告

一实验目的

1、熟悉嵌入式开发平台部件,了解宿主机/目标机开发模式;

2、熟悉和掌握常用Linux的命令和工具。

二实验步骤

1、连接主机和目标板;(三根线,网线直接连接实验箱和PC机,实验箱UART2连接主机的UART口)。

2、Linux命令的熟悉与操作

PC端:在PC机的桌面上打开虚拟机,并启动Linux系统,打开命令终端,操作Linux基本命令,如:查看:ls,进入目录:cd,创建文件:mkdir,删除文件:rmdir,配置网络:ifconfig,挂载:mount,设置权限:chmod,编辑器:vi,拷贝:cp等命令,要求能熟练操作。

使用方法: 1.查看:ls Ls列出文件和目录

Ls–a

显示隐藏文件

Ls–l

显示长列格式ls–al 其中:蓝:目录;绿:可执行文件;红:压缩文件;浅蓝:链接文件;灰:其他文件;红底白字:错误的链接文件

2.进入目录:cd 改变当前目录:cd 目录名(进入用户home目录:cd ~;进入上一级目录:cd-)3.创建文件:mkdir 建立文件/目录:touch 文件名/mkdir目录名 4.删除文件:rmdir 删除空目录:rmdir目录名 5.配置网络:ifconfig 网络确定目录 '/ mnt/hda2' 已经存在

umount /dev/hda2 卸载一个叫做hda2的盘使用 “+” 设置权限,使用 “-” 用于取消 ls-lh显示权限

ls /tmp | pr-T5-W$COLUMNS 将终端划分成5栏显示

chmodugo+rwx directory1 设置目录的所有人(u)、群组(g)以及其他人(o)以读(r)、写(w)和执行(x)的权限

chmod go-rwx directory1 删除群组(g)与其他人(o)对目录的读写执行权限 chown user1 file1 改变一个文件的所有人属性

chown-R user1 directory1 改变一个目录的所有人属性并同时改变改目录下所有文件的属性

chgrp group1 file1 改变文件的群组

chown user1:group1 file1 改变一个文件的所有人和群组属性 find /-perm-u+s罗列一个系统中所有使用了SUID控制的文件

chmodu+s /bin/file1 设置一个二进制文件的 SUID 位类似SUID,不过这是针对目录的

chmod g-s /home/public 禁用一个目录的 SGID 位

chmodo+t /home/public 设置一个文件的 STIKY 位-只允许合法所有人删除文件

chmod o-t /home/public 禁用一个目录的 STIKY 位 8.编辑器:vi vi开发步骤:

a)vi hell.sql(文件名)b)按i

[进入插入模式] c)按 esc

[进入命令模式] d)输入qw

[表示退出保存] e)输入 q![表示退出不保存] f)输入ls/ls–l

[查看] g)gcc-o my1 hello.sql [-o my1 代表输出按my1 名] w表示与入的意思,也就将目前的文件内容加以保存, q表示退出的意思,也是vi的执行 q!强制离开,并且不保存文件

wq将修改过得内容保存,并离开vi set nu 在文件中每行加入行号 ser noun 取消行号

输入数字若输入数字再按ESC建就可将光标移至改行

/字符串在很长的文件在可以利用”/字符串”的命令来查找特定字 例如“tcp”如果不是所需要的可以按N继续往下查找

?字符串可以利用”?字符串”的命令查找特定字

例如”:/tcp”如果不是所需要的可以按N继续往下查找 9.拷贝:cp等命令

cp–r dir1 dir2 递归复制命令(复制子目录信息)具体操作:打开虚拟机,随意选择一个linux版本,打开命令终端。输入以上命令,观察结果,熟悉指令操作。

图2-1指令熟悉截图

3、打开PC桌面的超级终端,开启实验箱电源,观察嵌入式开发平台的启动过程的打印信息,等待嵌入式平台的操作系统启动后,在超级终端输入步骤2的相关命令。

4、下面所有的操作必须以命令形式。

1)在虚拟机中安装的Linux系统上建立以自己学号命名的文件夹,用vi命令新建以学号命名的文件,熟悉如何编辑源程序代码,随意输入代码并保存退出。

图2-2编辑源程序代码截图

图2-3建立文件夹截图

2)从PC机中复制一个嵌入式平台的可执行文件到该文件夹下(也可以用

vi命令新建一个C语言的文件,之后用arm-linux-gccxxx.c–o xtu得到嵌入式平台可以运行的xtu文件),并修改其名称为xtu。

图2-4建立xtu文件截图

3把xtu文件通过cp命令复制到/tftpboot目录下,设置好开发板的ip。

图2-5 Ip设置截图

设置好PC中Linux的ip,在嵌入式平台通过串口输入tftp命令从PC上的

Linux下载xtu文件到嵌入式开发实验箱平台中,在嵌入式平台上用chmod 777 xtu更改文件权限为可执行权限,运行xtu程序,并查看运行结果。

图2-6 下载文件截图

图2-7下载文件截图

三实验思考

1、比较Linux命令与DOS命令的异同。

Linux是免费的系统,与windows相比具有可靠、稳定、速度快等优点,且拥有丰富的根据Linux版本改进的强大功能。启动: 作为操作系统本身,Linux在启动和退出时所作的工作要比DOS多得多,可以通过按下Ctrl+Alt+Del三键进行热启动。不同的是Linux启动到最后时,需要进行登录。下面是一个典型的登录过程:

„„RedHat Linux release 5.1

Kernel 2.0.32 on an i686

login: 你键入:root后,计算机显示输口令(password,输入你的口令(如果是第一次启动,则是你在安装时所输入的口令)即可。当计算机出现一个“#”提示符时,表明你登录成功!

[root@localhost root]#_ 常用命令:

2、注意理解宿主机/目标机开发模式,PC机是宿主机,嵌入式平台是目标机,未来的开发工作是在PC机中开发,目标机中运行并验证。

交叉开发环境是指编译、链接和调试嵌入式应用软件的环境,它与运行嵌入式应用软件的环境有所不同,通常采用宿主机/目标机模式。宿主机(host)一般采用一台通用计算机(如PC机或者工作站),它通过串口(Serial)或者以太网(Ethernet)接口与目标机通信。宿主机的软硬件资源比较丰富,不但包括功能强大的操作系统(如 Windows 和 Linux),而且还有各种各样优秀的开发工具(如WindRiver的Tornado、Microsoft的Embedded Visual C++等),能够大大

提高嵌入式应用软件的开发速度和效率。目标机(target)一般在嵌入式应用软件的开发和调试期间使用,用来区别与嵌入式系统通信的宿主机。目标机可以是嵌入式应用软件的实际运行环境,也可以是能够替代实际运行环境的仿真系统,但软硬件资源通常都比较有限。嵌入式系统的交叉开发环境一般包括交叉编译器、交叉调试器和系统仿真器(Emulator),其中交叉编译器用于在宿主机上生成能在目标机上运行的代码,而交叉调试器和系统仿真器则用于在宿主机与目标机间完成嵌入式软件的调试。

四实验心得

通过本次实验了解了linux的基本命令,如:ls,cd,mkdir,rmdir,ifconfig,mount,chmod,vi,cp等等,特别是ls,cd,vi等命令比较重要,在以后的实验中会经常用到。熟悉了嵌入式开发平台部件,了解宿主机/目标机开发模式。

在嵌入式试验中使用linux系统是第一次用,一开始对linux系统的命令以和工具的操作都很陌生,只会部分命令的操作,操作起来非常慢。在实验中一个整体的流程也不是很熟悉,过程中遇到的很多小问题都不会解决。浪费了很多时间在实验操作上,同时实验室的机器有部分的坏的,导致做到后边无法继续完成,只能换机器。但是最后在助教和同学的帮助下,我还是完成了这个实验。在这个过程中,我觉得个人的态度很重要,不管我们以前有没有接触过这个知识,我们都应该抱着一颗积极的心去了解它、学习它,不能因为它陌生就排斥。并且在做实验时,不管遇到什么问题以及困难,我们都应该要有耐心,心平气和的去请教别人,直到搞懂所有问题。尤其做到后边遇到问题不要心急,把整个流程一步步的搞懂,再操作起来就会容易些。

第四篇:数据结构_实验2_顺序表的基本操作(推荐)

实 验 报 告

实验课程

数据结构

实验项目

实验

二、顺序表的基本操作

实验地点

指导教师

学生姓名

教师评分

浙江传媒学院实验报告

一、实验目的

1、掌握线性表的顺序存储结构;

2、掌握顺序表及其基本操作的实现;

3、掌握数据结构及算法的程序实现的基本方法。

二、实验设备

1.安装有WinXP的PC一台;

2.安装有软件VC6或者Visual Studio2005。

三、实验内容

1、建立含有若干个元素的顺序表;

2、对已建立的顺序表实现插入、删除、查找等基本操作;

3、对两个顺序表进行合并操作。

四、实验步骤

1.根据下面的表格,定义一个表示数据元素的结构体。

2.根据教材的内容,定义顺序表的结构体。

3.根据教材的内容,编写代码,实现顺序表的下列函数。

浙江传媒学院实验报告

4.定义数据元素输入函数如下。请完善代码。

5.定义顺序表的创建函数如下,请完善代码。

6.定义数据元素的输出函数如下,请完善代码。

7.定义main函数,要求完成如下功能。

A.定义三个顺序表分别为list1, list2,list3; B.初始化两个顺序表list1和list2;C.输入顺序表list1;

浙江传媒学院实验报告

D.输入list2;E.合并list1和list2到list3中; F.删除list3中的

第五篇:实验一 Linux的基本操作 -

实验一 Linux的基本操作

姓名: 江振明

学号:2010142016

时间:2013-04-13 地点:工西4楼

目的: 1熟悉Linux 基本命令与文件目录系统全屏幕编辑器的使用 Shell 脚本编程实验

4.Makefile

设备:PC机,虚拟机Linux系统, 一个U盘 实验内容:

一.完成下列操作,并将执行过程和运行结果附上。

1)建立目录

/home/学号

实验结果:已在/home 目录下新建了目录/2010142016-2010142007。

2)将/arm2410cl/exp/basic/01_hello的目录及目录下的内容,拷贝到 /home/学号 下面

3)查看拷贝到/home/学号下的文件的属性

4)更改文件名,将文件hello.c 的名字改为 helloworld.c.5)在/mnt下建立目录usb

6)将u盘挂载到/mnt/usb, 察看u盘内容。(具体步骤如下,需要进行适当地修改)#fdisk –l

;察看u盘的设备名

#mount /dev/XXXX

/mnt/usb

(说明xxx,为u盘的设备名,根据fdisk-l显示的内容填写)

# ls /mnt/usb

7)将u盘的某个文件复制到/home/学号

8)给虚拟机pc-linux系统设置网络地址192.168.1.2,察看网络地址

先查看pc-linux系统的网络地址:为192.168.199.129

然后更改设置pc-linux系统设置网络地址192.168.1.2,再次查看:已设置成功。

9)给pc-win机设置网络地址192.168.1.10,察看网络地址

设置pc-win机的网络地址为:192.168.1.10。

10)查看网络是否通畅,再虚拟机上与 pc-win通信。

网络通畅。

11)在pc-win与虚拟机pc-linux通信。

pc-win与虚拟机pc-linux通信成功。

12)进入/home/学号/01_hello目录下

13)查看 hello.c 文件的内容。

在第4)步时已经把hello.c改为helloworld.c,故这里是查看helloworld.c的内容。

14)将/home/学号/下的文件打包并压缩

15)将/arm2410cl/gui/tools/arm-linux-gcc-3.4.1.tar.bz2解压到目录/opt 下面。

二.练习(vi)vim的命令, 分别指出每个命令处于何种模式下。

(1)进入”/home/学号”目录 # cd /home/学号

(2)将文件 “/etc/inittab” 复制到目录 “/home/学号”目录下

# cp /etc/inittab./ 先用„cd‟命令移到/home/2010142016-2010142007 目录下,执行cp /etc/inittab./ 成功把文件“/etc/inittab” 复制到目录 “/home/2010142016-2010142007“下。

(3)使用 vi 打开 /home/学号 目录下的文件

inittab

# vi./inittab

(4)设定行号,指定设定initdefault 的所在行号

:set nu

(底行模式)

(5)将光标移到该行

(命令行模式)

(6)复制该行内容

Yy(7)将光标移动到最后一行行首

G

(8)粘帖复制行的内容

P

(9)撤销第8步的动作

U

(10)将光标移动到最后一行的行尾

$

(11)粘帖复制行的内容

P

(12)光标移动到 “ si::sysinit:/etc/rc.d/rc.sysinit”

21G

(13)删除该行

Dd

(14)存盘但不退出

:w(底行模式):

(15)将光标移动到行首

1G

(16)插入模式下输入 “Hello ,this is Vi world!”

I 并输入

Hello , this is vi world!

(17)返回命令行模式

Esc

(18)向下查找字符串 “0:wait”

/0:wait

(19)再向上查找字符串 “halt”

?halt

(20)强制退出Vi,不存盘。

:q!

该实验的最后的结果只对 “/home/学号/inittab” 增加了一行复制的内容: “ id:5:initdefault”

shell 程序的创建与执行

1)创建一个内容如下的文件,文件名为datex ,将其存放在/root目录下

# program datex # show the date in this way echo “Mr.$USER, Today is :”

echo „date‟

echo Whish you a lucky day!

设置执行权限

# chmod u+x /root/datex # ls –l /root

执行程序 # /root/datex

使用bash命令执行程序

# bash /root/datex

(在不设置可执行权限时,可以这样执行)

2).建立一个欢迎界面的shell程序,文件名为welcom,(函数的使用)#!/bin/bash #filename : welcome first(){ echo “============================================”

echo “Hello!Everyone!Welcom to the Linux World!”

echo “============================================” } second(){ echo “*****************************************************” }

first second second first

执行

# chmod u+x welcome #./welcome

四 Makefile 文件的编写

1)建立文件。五个文件分别是main.c、display1.h、display1.c、display2.h、display2.c,具体的代码如下: # vim main.c #include “stdio.h” int main(int argc,char **argv){ display1(“hello”);display2(“hello”);}

#vim display1.h void display1(char *print_str);

# vim display2.h void display2(char *print_str);

# vim display1.c #include “display1.h” void display1(char *print_str){ printf(“This is display1 print %sn”,print_str);}

#vim display2.c #include “display2.h” void display2(char *print_str){ printf(“This is display2 print %sn”,print_str);}

(1)如果上述文件在同一个目录,请编写Makefile文件。

#vim Makefile CC=gcc //CC=/opt/host/armv4l/bin/armv4l-unknown-linux-gcc(交叉编译)all:main.o display1.o display2.o $(CC)main.o display1.o display2.o-o mains main.o:main.c $(CC)-c main.c-o main.o display1.o:display1.c display1.h $(CC)-c display1.c-o display1.o display2.o:display2.c display2.h $(CC)-c display2.c-o display2.o clean: rm *.o mains

(2)用$@, $< ,$^ 简化上面的Makefile文件。

(3)执行make

五. Linux的编程基础(附加练习:熟悉Linux进程编程控制,看书并阅读代码)

从mystu上下载教科书中的 程序源代码,在Linux环境下编译,并运行它们。要求阅读代码,理解执行的结果。

1)请将u盘挂载到 /mnt/usb 下

2)将u盘上sharedada的内容复制到 /home/学号下面

3)分别编译下列文件并执行

forkfun.c ,waitpid.c ,pipe_rw.c, fifo_read.c,fifo_write.c,killfun.c,alarm_pause.c,mysignal.c,sigaction.c ,th_example1.c,mutex.c , cond.c ,sema.c,

下载《数据结构》 实验报告(附实例) ---实验一 线性表的基本操作实现(五篇范例)word格式文档
下载《数据结构》 实验报告(附实例) ---实验一 线性表的基本操作实现(五篇范例).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐