顺序表的查找、插入与删除实验报告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构》实验报告一
学院:
班级:
学号:
姓名:
日期:
程序名
一、上机实验的问题和要求:
顺序表的查找、插入与删除。设计算法,实现线性结构上的顺序表的产生以及元素的查找、插入与删除。具体实现要求:
1.从键盘输入10个整数,产生顺序表,并输入结点值。
2.从键盘输入1个整数,在顺序表中查找该结点的位置。若找到,输出结点的位置;若找不到,则显示“找不到”。
}
/*顺序表的查找:*/
int LocateList(SeqList L,DataType x)
{
int i=0;
while (i<L.length && L.data [i]!=x)
++i;
if (i<L.length)
return i+ 1;
else return 0;
}
/*顺序表的插入:*/
void InsertList(SeqList *L,DataType x,int i)
{
int i;
for(i=0;i<n;i++)
scanf ("%d",&L->data[i]);
L->leLeabharlann Baidugth=n;
}
/*顺序表的打印:*/
void PrintList(SeqList L,int n)
{
int i;
for(i=0;i<L.length;i++)
cout<<L.data[i]<<endl;
{DataType data[ListSize];/*向量data用于存放表结点*/
int length;/*当前的表长度*/
}SeqList;
void main()
{
SeqList L;
int i,x;
int n=10;/*欲建立的顺序表长度*/
L.length=0;
void CreateList(SeqList *L,int n);
3.从键盘输入2个整数,一个表示欲插入的位置i,另一个表示欲插入的数值x,将x插入在对应位置上,输出顺序表所有结点值,观察输出结果。
4.从键盘输入1个整数,表示欲删除结点的位置,输出顺序表所有结点值,观察输出结果。
二、源程序及注释:
#include <stdio.h>
#include <stdlib.h>
/*顺序表的定义:*/
#include<iostream.h>
#define ListSize 100/*表空间大小可根据实际需要而定,这里假设为100*/
typedef int DataType;/*DataType可以是任何相应的数据类型如int, float或char*/
typedef struct
L->data[i-1]=x;
L->length++;
}
/*顺序表的删除:*/
void DeleteList(SeqList *L,int i)
{
int j;
if (L->length ==0)
{
printf("现行表为空,退出运行\n");
exit(0);
}
if (i<1 || i>L->length)
{
printf("删除位置非法\n");
exit(0);
}
for(j=i;j<=L->length -1;j++)
L->data[j-1]=L->data[j];
L->length --;
}
三、运行输出结果:
四、调试和运行程序过程中产生的问题及采取的措施:
{
int j;
if(i<1 || i>L->length +1)
{
printf("插入位置非法\n");
exit(0);
}
if(L->length >=ListSize)
{
printf("表空间溢出,退出运行\n");
exit(0);
}
for(j =L->length-1; j>=i-1;j--)
L->data[j+1]=L->data[j];
InsertList(&L,x,i);/*顺序表插入*/
PrintList(L,n);/*打印顺序表*/
printf("输入要删除的位置:");
scanf("%d",&i);
DeleteList(&L,i);/*顺序表删除*/
PrintList(L,n);/*打印顺序表*/
}
/*顺序表的建立:*/
void CreateList(SeqList *L,int n)
void PrintList(SeqList L,int n);
int LocateList(SeqList L,DataType x);
void InsertList(SeqList *L,DataType x,int i);
void DeleteList(SeqList *L,int i);
CreateList(&L,n);/*建立顺序表*/
PrintList(L,n);/*打印顺序表*/
printf("输入要查找的值:");
scanf("%d",&x);
i=LocateList(L,x);/*顺序表查找*/
printf("输入要插入的位置:");
scanf("%d",&i);
printf("输入要插入的元素:");
scanf("%d",&x);
学院:
班级:
学号:
姓名:
日期:
程序名
一、上机实验的问题和要求:
顺序表的查找、插入与删除。设计算法,实现线性结构上的顺序表的产生以及元素的查找、插入与删除。具体实现要求:
1.从键盘输入10个整数,产生顺序表,并输入结点值。
2.从键盘输入1个整数,在顺序表中查找该结点的位置。若找到,输出结点的位置;若找不到,则显示“找不到”。
}
/*顺序表的查找:*/
int LocateList(SeqList L,DataType x)
{
int i=0;
while (i<L.length && L.data [i]!=x)
++i;
if (i<L.length)
return i+ 1;
else return 0;
}
/*顺序表的插入:*/
void InsertList(SeqList *L,DataType x,int i)
{
int i;
for(i=0;i<n;i++)
scanf ("%d",&L->data[i]);
L->leLeabharlann Baidugth=n;
}
/*顺序表的打印:*/
void PrintList(SeqList L,int n)
{
int i;
for(i=0;i<L.length;i++)
cout<<L.data[i]<<endl;
{DataType data[ListSize];/*向量data用于存放表结点*/
int length;/*当前的表长度*/
}SeqList;
void main()
{
SeqList L;
int i,x;
int n=10;/*欲建立的顺序表长度*/
L.length=0;
void CreateList(SeqList *L,int n);
3.从键盘输入2个整数,一个表示欲插入的位置i,另一个表示欲插入的数值x,将x插入在对应位置上,输出顺序表所有结点值,观察输出结果。
4.从键盘输入1个整数,表示欲删除结点的位置,输出顺序表所有结点值,观察输出结果。
二、源程序及注释:
#include <stdio.h>
#include <stdlib.h>
/*顺序表的定义:*/
#include<iostream.h>
#define ListSize 100/*表空间大小可根据实际需要而定,这里假设为100*/
typedef int DataType;/*DataType可以是任何相应的数据类型如int, float或char*/
typedef struct
L->data[i-1]=x;
L->length++;
}
/*顺序表的删除:*/
void DeleteList(SeqList *L,int i)
{
int j;
if (L->length ==0)
{
printf("现行表为空,退出运行\n");
exit(0);
}
if (i<1 || i>L->length)
{
printf("删除位置非法\n");
exit(0);
}
for(j=i;j<=L->length -1;j++)
L->data[j-1]=L->data[j];
L->length --;
}
三、运行输出结果:
四、调试和运行程序过程中产生的问题及采取的措施:
{
int j;
if(i<1 || i>L->length +1)
{
printf("插入位置非法\n");
exit(0);
}
if(L->length >=ListSize)
{
printf("表空间溢出,退出运行\n");
exit(0);
}
for(j =L->length-1; j>=i-1;j--)
L->data[j+1]=L->data[j];
InsertList(&L,x,i);/*顺序表插入*/
PrintList(L,n);/*打印顺序表*/
printf("输入要删除的位置:");
scanf("%d",&i);
DeleteList(&L,i);/*顺序表删除*/
PrintList(L,n);/*打印顺序表*/
}
/*顺序表的建立:*/
void CreateList(SeqList *L,int n)
void PrintList(SeqList L,int n);
int LocateList(SeqList L,DataType x);
void InsertList(SeqList *L,DataType x,int i);
void DeleteList(SeqList *L,int i);
CreateList(&L,n);/*建立顺序表*/
PrintList(L,n);/*打印顺序表*/
printf("输入要查找的值:");
scanf("%d",&x);
i=LocateList(L,x);/*顺序表查找*/
printf("输入要插入的位置:");
scanf("%d",&i);
printf("输入要插入的元素:");
scanf("%d",&x);