您好,欢迎来到六九路网。
搜索
您的当前位置:首页c语言线性表(链表)的操作实验报告和程序代码

c语言线性表(链表)的操作实验报告和程序代码

来源:六九路网


实验一 线性表(链表)的操作

一、实验目的 掌握线性表的基本概念

掌握顺序存储的概念。

加深对顺序存储数据结构的理解,逐步培养解决实际问题的编程能力。

二、实验内容

题1:

要求以较高的效率实现删除线性表中元素值在x到y(x和y自定)之间所有的元素。 解题思路 在线性表中设置两个初值为0的下标变量i和j,其中,i为比较元素的下标,j为赋值元素的下标。依次取线性表中下标为i的元素与x和y比较,假若是x 到y之外的元素,则赋值给下标为j的元素。这种算法比删除一个元素后立即移动其后面的元素的效率高得多。

代码:

#define X 10 #define Y 30 #define N 20

int A[N]={2,5,15,30,1,40,17,50,9,21,32,8,41,22,49,31,33,18,80,5}; #include

void del(int *A, int *n, int x, int y) {

int i,j; for(i=j=0; i<*n; i++) if(A[i]>y||A[i]void output(int *A, int n) {

int i; printf(\"\\n数组有%d个元素:\\n\ for(i=0; iint main()

{

int n; n=N; output(A,n); del(A,&n,X,Y); output(A,n); }

算法流程图:

开始 输入数组大小n,数组的值,x和y大小 i=0;j=0; a[i]y Y a[j++]=a[i] N i++; i题2

编程实现将两个有序的线性表合并,要求同样的数据元素只出现一次。

解题思路 由于两个线性表中的元素呈有序排列,在进行合并的时候,依次比较,哪个线性表的元素值小,就先将这个元素复制到新的线性表中,若两个元素相等,则复制一个即可,这样一直到其中的一个线性表结束,然后将剩余的线性表复制到新的线性表中即可。 代码:

#include struct LinearList {

int *list; int size; int MAXSIZE; };

int main() {

int list1[15]={2,5,7,8,10,14,19,22,25,30}; int list2[15]={3,5,8,9,11,18,22,28,30,32,35}; int list3[30]; struct LinearList L1={list1,10,15}; struct LinearList L2={list2,11,15}; struct LinearList L3={list3,0,30}; int i,j,k; for(i=j=k=0; kL2.list[j]) L3.list[k]=L2.list[j++]; else if(L1.list[i]==L2.list[j]) { L3.list[k]=L1.list[i++]; j++; } else L3.list[k]=L1.list[i++]; } while(k}

流程图:

开始 初始化,给LinearList L1,L2赋初值 i=0;j=0;k=0; k=L2.list[j] L3.list[k]=L1.list[i++]; N Y L1.list[i]==L2.list[j] Y L3.list[k]=L2.list[j++]; k++;

k三、实验总结

本次实验题目比较简单,但是由于很少画流程图,对流程图不熟悉,导致实验做的很慢,通过本次实验熟悉了流程图的画法。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务