实验题一(实现顺序表各种基本运算的算法)

更新时间:2023-07-24 00:25:23 阅读: 评论:0

实验题⼀(实现顺序表各种基本运算的算法)
⽬的:领会顺序表存储结构和掌握顺序表中各种基本运算算法设计。
内容:编写⼀个.cpp的程序,实现顺序表的各种基本运算和整体建表算法(假设顺序表的元素类型为 Elemtype char),并在此基础上设计⼀个主程序,完成如下功能:
(1)初始化顺序表L。
(2)依次插⼊a,b,c,d,e元素。
(3)输出顺序表L。
(4)输出顺序表L的长度。
(5)判断顺序表L是否为空。
(6)输出顺序表L的第3个元素。
(7)输出元素a的位置。
regardas
(8)在第4个元素位置上插⼊f元素。
(9)输出顺序表L。
(10)删除顺序表L的第3个元素。
(11)输出顺序表L。
(12)释放顺序表L。
code:
#include<cstdio>
#include<cstdlib>
#include<malloc.h>
#define Maxsize 100
typedef char Elemtype;
typedef struct{
Elemtype data[Maxsize];//存放顺序表元素
int length;//存放顺序表的长度
}Sqlist;//声明顺序表的类型
//整体建⽴顺序表
void CreatSqlist(Sqlist*&L,Elemtype a[],int n){
int i;
L=(Sqlist *)malloc(sizeof(Sqlist));
for(i=0;i<n;i++)
L->data[i]=a[i];
L->length=n;
}
/
/初始化线性表
void InitSqlist(Sqlist*&L){
L=(Sqlist *)malloc(sizeof(Sqlist));//分配存放线性表的空间
L->length=0;
}
//销毁线性表
void DestroySqlist(Sqlist*&L){
free(L);
}
//判断顺序表是否为空表
bool SqlistEmpty(Sqlist*L){
return(L->length==0);ehcache
}
/* TODO (#1#): SqSqlist */
//求线性表的长度
int Sqlistlength(Sqlist*L){
return(L->length);
}
//输出线性表
void DispSqlist(Sqlist*L){
int i;
for(i=0;i<L->length;i++)
printf("%c",L->data[i]);
printf("\n");
}
}
//求线性表中第i个元素值
bool GetElem(Sqlist*L,int i,Elemtype &e){excite co jp
if(i<1||i>L->length)
return fal;
e=L->data[i-1];
return true;
}
/
/查找第⼀个值域为e的元素序号
int Locate(Sqlist*L,Elemtype e){
int i=0;
while(i<L->length&&L->data[i]!=e)
i++;
if(i>=L->length)
return0;
出国留学英语el
return i+1;
}
//插⼊第i个元素
bool SqlistInrt(Sqlist*&L,int i,Elemtype e){
int j;
if(i<1||i>L->length-1)
return fal;
i--;//将顺序表位序转换为data[]下标
for(j=L->length;j>i;j--){//将data[i]及后⾯元素后移⼀个位置  L->data[j]=L->data[j-1];
L->data[i]=e;
L->length++;//顺序表长度增1
return true;
}
}
/
/删除第i个元素
bool SqlistDelete(Sqlist*&L,int i,Elemtype &e){
int j;
if(i<1||i>L->length){
return fal;
}
i--;//将顺序表位序转换为data[]下标
e=L->data[i];
for(j=i;j<L->length-1;j++){
L->data[j]=L->data[j+1];
L->length--;
}
return true;
}
int main(){
Sqlist *L;
char a[5]={0};
Elemtype e;
printf("顺序表的基本运算如下:\n");
printf("(1)初始化顺序表L\n");
InitSqlist(L);
CreatSqlist(L,a,5);
printf("(2)依次插⼊a,b,c,d,e元素\n");
SqlistInrt(L,1,'a');
SqlistInrt(L,2,'b');
SqlistInrt(L,3,'c');
SqlistInrt(L,4,'d');
SqlistInrt(L,5,'e');
printf("(3)输出顺序表L:");DispSqlist(L);
printf("(4)输出顺序表L的长度%d\n",Sqlistlength(L));
printf("(5)判断顺序表L为%s\n",SqlistEmpty(L)?"空":"⾮空"); GetElem(L,3,e);
printf("(6)输出顺序表L的第3个元素%c\n",e);
printf("(6)输出顺序表L的第3个元素%c\n",e);
printf("(7)输出元素a的位置为%d\n",Locate(L,'a'));
printf("(8)在第4个元素位置上插⼊f元素\n");
SqlistInrt(L,4,'f');
printf("(9)输出顺序表L:");DispSqlist(L);
printf("(10)删除顺序表L的第3个元素\n");
SqlistDelete(L,3,e);
printf("(11)输出顺序表L:");DispSqlist(L);
printf("(12)释放顺序表L\n");
DestroySqlist(L);
return0;
}
附加code:
#include<stdio.h>
#include<malloc.h>
#define ERROR 0
#define TRUE 1
#define MAXSIZE 30    /*初始分配的顺序表长度*/
typedef int ElemType;/*定义表元素的类型*/
typedef struct{
ElemType elem[MAXSIZE];/*存储空间的基地址*/
int length;/*顺序表的当前长度*/
}SeqList;
int Init_SeqList(SeqList *L);/*初始化顺序表*/
int Create_SeqList(SeqList *L,int n);/*创建顺序表*/
int Inrt_SeqList(SeqList *L,int i,ElemType x);/*顺序表的插⼊操作*/ int Traver_SeqList(SeqList *L);/*顺序表的遍历*/
int Delete_SeqList(SeqList *L,int i);/*顺序表的删除操作*/
int Locate_SeqList(SeqList *L,ElemType e);/*查找值为e的元素*/
int Init_SeqList(SeqList *L){
L=(SeqList *)malloc(sizeof(SeqList));
L->length=0;/*空表长度为0 *///填空
}/*InitList*/
int Create_SeqList(SeqList *L,int n){
ElemType x;
ElemType elem[MAXSIZE];
int i;
for(i=1; i<=n;i++){
printf("Plea Input data %d: ",i);
scanf("%d",&x);
elem[i]=x;
if(!Inrt_SeqList( L,i,x))
return ERROR;
}
return TRUE;
}/*CreateList*/
/
*输出顺序表中的元素*/
int Traver_SeqList(SeqList *L){//遍历
int i;
四级 考试时间for(i=0;i<L->length;i++)
printf("%-7d",L->elem[i]);//填空
printf("\n");
}/*TraverList*/
int Inrt_SeqList(SeqList *L,ElemType x,int i){
int j;
if(i<1||i>L->length+1)//填空
return ERROR;
i--;
for(j=L->length;j>i;j--)
{
L->elem[j]= L->elem[j-1];
}
L->elem[i]=x;
canxueL->length++;
return TRUE;
}/*ListInrt*/
/*在顺序表中删除第i个元素*/
int Delete_SeqList(SeqList *L,int i,ElemType e){
int j;
if(i<1||i>L->length)
英语日记80字
return ERROR;
i--;
e=L->elem[i];
for(j=i+1;j<=L->length;j++)
L->elem[j-1]=L->elem[j];
L->length--;
return TRUE;
行脚}
/*在顺序表中查找指定值元素,返回其序号*/
int Locate_SeqList(SeqList *L,ElemType e){
int i=1;
while(i<=L->length && L->elem[i]!=e)//填空
i++;
if(i==L->length+1)return ERROR;//填空
el return i;//填空
}
int main(){
SeqList *sl;
int n,m,k,o;
int x;
eleganceprintf("**************************************************\n");
printf("              顺序表常⽤算法\n");
printf("**************************************************\n\n");
sl=(SeqList *)malloc(sizeof(SeqList));
printf("1、初始化线性表:设置表长为0\n");
Init_SeqList(sl);
printf("顺序表初始化成功……\n\n");
printf("2、创建顺序表:\n");
do{
printf("请输⼊顺序表长度(n>=0):");
scanf("%d",&n);/*输⼊顺序表的元素个数*/pgm
}while(n<0);
Create_SeqList(sl,n);
printf("顺序表创建成功……\n\n");;
printf("3、遍历顺序表:\n");/*依次访问顺序表中所有元素*/ Traver_SeqList(sl);
printf("4、顺序表的插⼊操作:\n");
printf("请输⼊待插⼊的数据及其位序(location,data):"); scanf("%d%d",&m,&k);
Inrt_SeqList(sl,m,k);
printf("插⼊操作执⾏成功……\n操作结果:");
Traver_SeqList(sl);
printf("5、顺序表的删除操作:\n");
printf("请输⼊待删除的数据(location,data):");
scanf("%d%d",&o,&x);
Delete_SeqList(sl,o,x);
printf("删除操作执⾏成功......\n操作结果:"); Traver_SeqList(sl);
return0;
}

本文发布于:2023-07-24 00:25:23,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/78/1113586.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

下一篇:WAFER ALIGNER
标签:顺序   元素   输出   表中
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图