大学程序实验.数据结构.顺序表的应用一.基本练习题 0 目录 1 顺序表的应用 1.1 基本练习题 1.1.1 题目 1.1.2 源码 1.1.3 下载 2 下
大学程序实验.数据结构.顺序表的应用一.基本练习题
- 0 目录
- 1 顺序表的应用
- 1.1 基本练习题
- 1.1.1 题目
- 1.1.2 源码
- 1.1.3 下载
- 2 下一章
0 目录
1 顺序表的应用
1.1 基本练习题
1.1.1 题目
从键盘输入一组整型元素序列,建立顺序表。要求输入元素递增,如果不递增提示重新输入刚才错误的数据。
实现该顺序表的遍历。
在该顺序表中进行顺序查找某一元素,查找成功返回1,否则返回0。
把元素x插入递增有序表中,仍保持有序性。
把递增的顺序表扩大成2倍大小,把顺序表变成前后对称的顺序表。
1.1.2 源码
// 顺序表.cpp : Defines the entry point for the console application.//
/***********************************************************************
* 头文件包含
***********************************************************************/
/***********************************************************************
* 本地宏定义
***********************************************************************/
typedef int ElemType;
typedef int Status;
typedef struct
{
ElemType data[MAX];
ElemType length;
}SqList;
/*********************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 参数列表 :
* 函数输出 :
*********************************************************************/
Status main()
{
SqList *L;
Status ListCreate(SqList *&L);
Status ListMenu();
Status ListTraver(SqList *&L);
Status ListSearch(SqList *&L);
Status ListInsert(SqList *&L);
Status ListExpand(SqList *&L);
ListCreate(L);
Label:
int result;
result=ListMenu();
if(result==1)
{
ListTraver(L);
goto Label;
}
else if(result==2)
{
int research;
research=ListSearch(L);
if(research)
{
printf("查找成功!\n");
goto Label;
}
else
{
printf("无此元素!\n");
goto Label;
}
}
else if(result==3)
{
int reinsert;
reinsert=ListInsert(L);
if(reinsert)
{
printf("插入成功!\n");
goto Label;
}
else
{
printf("插入失败!\n");
goto Label;
}
}
else if(result==4)
{
int reexpand;
reexpand=ListExpand(L);
if(reexpand)
{
printf("扩展成功!\n");
goto Label;
}
else
{
printf("溢出!\n");
goto Label;
}
}
else
{
printf("退出!");
}
return ERROR;
}
/*********************************************************************
* 函 数 名 : ListCreate
* 函数功能 : 创建函数
* 参数列表 :
* 函数输出 :
*********************************************************************/
Status ListCreate(SqList *&L)
{
int i;
int value;
L=(SqList*)malloc(sizeof(SqList));
L->length=0;
printf("初始输入部分\n");
printf("请输入%d个递增整型数据。\n",VALUE);
for(i=0;i<VALUE;i++,L->length++)
{
if(i==0)
{
scanf("%d",&L->data[i]);
}
else
{
Label:
scanf("%d",&value);
if(value>L->data[i-1])
{
L->data[i]=value;
}
else
{
printf("请重新输入递增整型数据:\n");
goto Label;
}
}
}
return OK;
}
/*********************************************************************
* 函 数 名 : ListMenu
* 函数功能 : 目录函数
* 参数列表 :
* 函数输出 :
*********************************************************************/
Status ListMenu()
{
printf("\n");
printf("顺序表操作目录\n");
printf("1 遍历顺序表\n");
printf("2 查找元素\n");
printf("3 插入元素\n");
printf("4 对称扩展顺序表\n");
printf("5 退出\n");
printf("请输入你要执行的操作:\n");
int value;
label:
scanf("%d",&value);
if((value>0)&&(value<6))
{
return value;
}
else
{
printf("请输入正确的操作!\n");
goto label;
}
}
/*********************************************************************
* 函 数 名 : ListTraver
* 函数功能 : 遍历函数
* 参数列表 :
* 函数输出 :
*********************************************************************/
Status ListTraver(SqList *&L)
{
int i;
for(i=0;i<L->length;i++)
{
printf("%3d\n",L->data[i]);
}
return OK;
}
/*********************************************************************
* 函 数 名 : ListSearch
* 函数功能 : 查询函数
* 参数列表 :
* 函数输出 :
*********************************************************************/
Status ListSearch(SqList *&L)
{
int i;
int search;
printf("请输入你要查询的整数数字:\n");
scanf("%d",&search);
for(i=0;i<L->length;i++)
{
if(L->data[i]==search)
{
return TRUE;
}
}
return FALSE;
}
/*********************************************************************
* 函 数 名 : ListInsert
* 函数功能 : 插入函数
* 参数列表 :
* 函数输出 :
*********************************************************************/
Status ListInsert(SqList *&L)
{
int i,k;
int LOC;
ElemType e;
printf("请输入你要插入的整数数字:\n");
scanf("%d",&e);
if(L->length==MAX)
{
return ERROR;
}
for(i=0;i<L->length;i++)
{
if(L->data[i]>=e)
{
break;
}
}
LOC=i+1;
if(LOC<1||LOC>L->length+1)
{
return ERROR;
}
if(LOC<=L->length+1)
{
for(k=L->length-1;k>=LOC-1;k--)
{
L->data[k+1]=L->data[k];
}
}
L->data[LOC-1]=e;
L->length++;
return OK;
}
/*********************************************************************
* 函 数 名 : ListExpand
* 函数功能 : 扩展函数
* 参数列表 :
* 函数输出 :
*********************************************************************/
Status ListExpand(SqList *&L)
{
int i;
int expand=L->length*2;
if(expand>=MAX)
{
return ERROR;
}
else
{
for(i=L->length;i>0;i--)
{
L->data[L->length]=L->data[i-1];
L->length++;
}
}
return OK;
}
1.1.3 下载
链接地址: 1.1_顺序表
2 下一章
博客地址: 大学数据结构实验(一.顺序表的应用二)