0
点赞
收藏
分享

微信扫一扫

大学数据结构实验(一.顺序表的应用一)


大学程序实验.数据结构.顺序表的应用一.基本练习题

  • ​​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.
//
/***********************************************************************
* 头文件包含
***********************************************************************/
#include "stdlib.h"
#include "stdio.h"

/***********************************************************************
* 本地宏定义
***********************************************************************/
#define MAX 50
#define VALUE 3
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0

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 下一章

博客地址: ​​大学数据结构实验(一.顺序表的应用二)​​


举报

相关推荐

数据结构一顺序表

0 条评论