数据结构实验报告(C语言)顺序表查找

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

//初始化顺序表 int InitList_sq(Sqlist *L){
L->slist=(ElemType*)malloc(INIT_SIZE*sizeof(ElemType)); if(!L->slist) return ERROR; L->length=0; L->listsize=INIT_SIZE; return OK; }/*InitList*/
//主函数 int main(){
Sqlist sl; int n,i,e; printf("******** 欢迎来到该界面 ******** \n"); printf("please input n:"); /*输入顺序表的元素个数*/
scanf("%d",&n); if(n>0) { printf("\n1-Create Sqlist:\n");
ListLocate(&sl, e); getchar(); }else printf("ERROR"); return 0;
}
三、实验分析与小结
得分(百分制)
typedef int ElemType; /*定义表元素的类型*/
typedef struct Sqlist{
ElemType *slist;
/*存储空间的基地址*/
int length;
/*顺序表的当前长度*/
int listsize;
/*当前分配的存储空间*/
}Sqlist;
int InitList_sq(Sqlist *L);
二、实验方法:(代码)
include "stdafx.h"
#include<stdio.h>
#include<malloc.h>
#define ERROR 0
#define OK 1
#define INIT_SIZE 5 /*初始分配的顺序表长度*/
#defiБайду номын сангаасe INCREM 5
/*溢出时,顺序表长度的增量*/
int CreateList_sq(Sqlist *L,int n);
int ListInsert_sq(Sqlist *L,int i,ElemType e);
int PrintList_sq(Sqlist *L);
int ListDelete_sq(Sqlist *L,int i);
void ListLocate(Sqlist *L,ElemType e);
{ int j; if (L->listsize<0) { printf ( "error"); return (0);} else if ( (i<1)||(i >L->length ) ) { printf ("error"); return (0); } else { for( j=i; j<=L->length+1; j++) L->slist[ j-1] =L->slist[ j]; L->length-- ; return (1); }
计算机科学与技术系
实验报告
专业名称 课程名称 项目名称 班级 学号 姓名 实验日期
计算机科学与技术 数据结构与算法 顺序表查找
格式要求
实验报告注意格式规范,要求在 word 中编写,文中不要有空行,统一使 用 A4 页面。
页边距:上 2.5cm、下 2cm、左 2.5cm、右 2cm。 标题:宋体、四号字、加粗、1.5 倍行距。 正文:宋体、小四号字、1.2 倍行距。
} /*在顺序表中查找指定值元素,返回其序号*/ void ListLocate(Sqlist *L,ElemType e){ int i,z=0; for(i=0;i<L->length;i++) if (L->slist[i]==e) {printf("该数值所在表中序号为:第%d 位",i+1); z=1;} if(z==0) printf("表中没有该值\n"); }
return ERROR; } return OK; }/*CreateList*/ /*输出顺序表中的元素*/ int PrintList_sq(Sqlist *L){ int i; for(i=1;i<=L->length;i++)
printf("%5d",L->slist[i-1]); return OK; }/*PrintList*/
//在顺序表中插入 int ListInsert_sq(Sqlist *L,int i,ElemType e) {
int k; if(i<1||i>L->length+1)
return ERROR; else {
for(k=L->length-1;k>=i-1;k--) L->slist[k+1]=L->slist[k];
一、实验目的与要求:
(一)实验目的
1、掌握线性表中元素的前驱、后续的概念。 2、掌握顺序表与链表的建立、插入元素、删除表中某元素的算法。 3、掌握线性表三种查找的算法。 4、对线性表相应算法的时间复杂度进行分析。 5、理解顺序表数据结构的特点(优缺点)。
(二)实验要求
1.将实验中所要求的每个功能用一个函数实现。 2.每个输入前要有输入提示,每个输出数据都要求有内容说明(如:280 和 100 的和是: 380。)。 3.函数名称和变量名称等用英文或英文简写(每个单词第一个字母大写)形式说明。
//创建顺序表 int CreateList_sq(Sqlist *L,int n){
ElemType e; int i; for(i=0;i<n;i++){
printf("input data %d",i+1); printf(": "); scanf("%d",&e); if(!ListInsert_sq(L,i+1,e))
L->slist[i-1]=e; L->length++; return(OK); }
//L->slist[i-1]=e; //L->length++; return OK; }/*ListInsert*/
/*在顺序表中删除第 i 个元素*/ int ListDelete_sq(Sqlist *L,int i)
InitList_sq(&sl); CreateList_sq(&sl,n); printf("输入要插入的值得序号和值:"); //顺序表的插入输出 scanf("%d %d",&i,&e); //输入要插入值元素的序号和要插入的值 ListInsert_sq(&sl,i,e); printf("输出插入后的顺序表:"); PrintList_sq(&sl); printf("\n"); //顺序表的删除输出 printf("输入要删除的值元素的序号:"); scanf("%d",&i ); //输入要删除的值元素的序号 ListDelete_sq(&sl,i); printf("输出删除后的顺序表:\n"); PrintList_sq(&sl); printf("\n"); //顺序表的查找输出 printf("输入要顺序查找的值:"); scanf("%d",&e );
相关文档
最新文档