《数据结构》实验二 线性表综合实验

本次实验报告中,通过实际操作线性表,加深了对线性表结构的理解,包括其基本操作和原理。同时,C++编程能力也得到了巩固和提升。
摘要由CSDN通过智能技术生成



一、实验目的
 1、    熟练掌握线性表的结构特点,掌握顺序表的基本操作。
 2、    巩固C++相关的程序设计方法与技术。
 3、    学会使用顺序表解决实际问题。
二、实验内容
 1、顺序表的建立与操作实现
建立n个元素的顺序表(n的大小和表里数据自己确定),实现相关的操作:输出,插入,删除,查找等功能。编写完整程序实现,程序语言不限定,使用技术形式不定。
三、实验步骤
 1、依据实验内容分别说明实验程序中用到的数据类型的定义;
     int 整形
四.实验报告
1、    顺序表的建立
void CreateList(SeqList *L,int n)
 {            int i;
 printf("please input n numbers:\n");
 for(i=1;i<=n;i++)
  scanf("%d",&L->elem[i]);
 L->length=n;
 } 
 2、    顺序表的插入
void InsertList(SeqList *L,int  x,int i)
 {int j;
 if (i<1 ||i>L->length+1)
 printf("no insert position!\n");
 else
 {for(j=L->length;j>=i;j--)
  L->elem[j+1]=L->elem[j];
 L->elem[i]=x;
 L->length++;
 }
3、    顺序表的删除
void DeleteList(SeqList *L,int i)
 {int j;
 if (i<1 ||i>L->length)
 printf("no delete position!\n");
 else
 {for(j=i;j<=(L->length)-1;j++)
 L->elem[j]=L->elem[j+1];
 L->length--;
 }
 }
  2、  顺序表的查找
int LocateList(SeqList *L,int  x)
 {int i;
 i=1;
 while (((L->elem[i])!=x)&&(i<=10))
 ++i;
 if ((L->elem[i])==x) return(i);
 else return(0);
}

3、完整程序;
#include <stdio.h>
#include <stdlib.h>
#define ListSize 100
typedef struct
 {int elem[ListSize];
  int length;
  }SeqList;
void CreateList(SeqList *L,int n)
 {int i;
  printf("please input nnumbers:\n");
  for(i=1;i<=n;i++)
  scanf("%d",&L->elem[i]);
  L->length=n;
  }
void PrintList(SeqList *L,int n)
 {int i;
 printf("the sqlistis\n");
 for(i=1;i<=n;i++)
 printf("%d",L->elem[i]);
 printf("\n");
 }
int LocateList(SeqList *L,int  x)
 {int i;
 i=1;
 while (((L->elem[i])!=x)&&(i<=10))
  ++i;
 if ((L->elem[i])==x) return(i);
 else return(0);
}
void InsertList(SeqList *L,int x,int i)
 {int j;
 if (i<1 ||i>L->length+1)
  printf("no insertposition!\n");
 else
  {for(j=L->length;j>=i;j--)
   L->elem[j+1]=L->elem[j];
  L->elem[i]=x;
  L->length++;
  }
 }
void DeleteList(SeqList *L,int i)
 {int j;
 if (i<1 ||i>L->length)
  printf("no deleteposition!\n");
 else
 {for(j=i;j<=(L->length)-1;j++)
  L->elem[j]=L->elem[j+1];
 L->length--;
 }
 }
void main()

    SeqList L;
    int i,x;
    int n=10;  
    L.length=0;
    CreateList(&L,n);
    PrintList(&L,L.length);
    printf("input the researchelement:");
    scanf("%d",&x);
    i=LocateList(&L,x);
    printf("the researchposition is %d\n",i);
    printf("input the positionof insert:");
    scanf("%d",&i);
    printf("input the value ofinsert:");
    scanf("%d",&x);
    InsertList(&L,x,i);  
    PrintList(&L,L.length);
    printf("input the positionof delete:");
    scanf("%d",&i);
    DeleteList(&L,i); 
    PrintList(&L,L.length);
}

4、运行结果


5、总体收获、不足、疑问

这次实验报告得到了同学的大力帮助才得以完成,非常惭愧。尽管如此我还是收获不少的,在课上没弄懂的线性表结构通过实践得到了比较深刻的认识。了解了线性表的几个基本操作以及其原理,还强化了我差不多忘了的C++的能力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值