栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

数据结构——线性表(基本操作及2022王道综合应用题)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据结构——线性表(基本操作及2022王道综合应用题)

  • 顺序表上的基本操作
#include
#define MaxSize 50

typedef struct{
    ElemType data[MaxSize];
    int length;
}SqList;

//在顺序表第i个位置插入元素
bool ListInsert(SqList &L,int i,ElemType e){
    if(i<1||i>L.length+1)//判断i的范围是否有效
        return false;
    if(L.length>=MaxSize)
        return false;
    for(int j=L.length;j>=i;j--)
        L.length[j]=L.data[j-1];
    L.data[i-1]=e;
    L.length++;
    return true; 
} 
  • 综合应用题
第一题
//删除最小值元素,并由函数返回被删元素的值 
//空出的位置由最后一个元素填补
//若顺序表为空,显示错误信息并退出运行
#include
using namespace std;
#define MaxSize 500
//定义线性表 
typedef struct{
	int data[MaxSize];
	int length;
}SqList;

//初始化线性表
void InitList(SqList &L,int n)
{
	int i=0;
	L.length=n;
	for(int i=0;i>L.data[i];
	}
}

//打印输出线性表 
void PrintList(SqList L)
{
	for(int i=0;i>n; 
 	InitList(L,n);
 	cout<<"得到线性表:"< 
第二题 
//将顺序表逆置,要求空间复杂度为O(1) 
#include
using namespace std;
#define MaxSize 500

//定义线性表 
typedef struct{
	int data[MaxSize];
	int length;
}SqList;

//初始化线性表
void InitList(SqList &L,int n)
{
	int i=0;
	L.length=n;
	for(int i=0;i>L.data[i];
	}
}

//打印输出线性表 
void PrintList(SqList L)
{
	for(int i=0;i>n; 
	InitList(L,n);
	cout<<"得到线性表:"< 
第三题 
//对长度为n的顺序表,编写一个时间复杂度为O(n)、空间复杂度为O(1)的算法
//该算法删除表中所有值为x的元素
#include
#define MaxSize 500
using namespace std;

//定义线性表 
typedef struct{
	int data[MaxSize];
	int length;
}SqList;

//初始化线性表
void InitList(SqList &L,int n)
{
	int i=0;
	L.length=n;
	for(int i=0;i>L.data[i];
	}
}

//打印输出线性表 
void PrintList(SqList L)
{
	for(int i=0;i>n; 
	cout<<"请依次输入线性表元素:"<>x;
	DeleteList(L,x);
	cout<<"删除元素后得到线性表:"< 
第四题 
//从有序顺序表中删除值在给定的s和t之间的所有元素(s
#define MaxSize 500 
using namespace std;
 
//定义线性表
typedef struct{
	int data[MaxSize];
	int length;
}SqList; 

//初始化线性表
void InitList(SqList &L,int n)
{
	for(int i=0;i>L.data[i];
	L.length=n;
} 

//打印输出线性表
void PrintList(SqList L)
{
	for(int i=0;i=t||L.length==0)
		return false;
	for(i=0;L.data[i]<=s&&i=L.length)
		return false;
	for(j=i;j>n; 
	cout<<"请按照顺序依次输入线性表中的元素:"<>s>>t;
	DeleteList(L,s,t);
	cout<<"删除相应元素后,得到线性表如下:"< 
第五题 
//从顺序表中删除s到t之间的元素
//从有序顺序表中删除值在给定的s和t之间的所有元素(s
#define MaxSize 500 
using namespace std;
 
//定义线性表
typedef struct{
	int data[MaxSize];
	int length;
}SqList; 

//初始化线性表
void InitList(SqList &L,int n)
{
	for(int i=0;i>L.data[i];
	L.length=n;
} 

//打印输出线性表
void PrintList(SqList L)
{
	for(int i=0;i=t)
	  	return false;
	for(i=0;i=s&&L.data[i]<=t)
			k++;
		else
			L.data[i-k]=L.data[i]; 
	}
	L.length-=k;
	return true;
  
  
  } 
 
 //主函数
 int main()
 {
 	SqList L;
 	cout<<"请输入线性表中元素个数:"<>n; 
	cout<<"请按照顺序依次输入线性表中的元素:"<>s>>t;
	DeleteList(L,s,t);
	cout<<"删除相应元素后,得到线性表如下:"< 
第六题 
//从有序表中删除所有值重复的元素,使表中所有元素的值均不相同
#include
#define MaxSize 500 
using namespace std;

//定义线性表
typedef struct{
	int data[MaxSize];
	int length;
}SqList; 

//初始化线性表
void InitList(SqList &L,int n)
{
	for(int i=0;i>L.data[i];
	L.length=n;
} 

//打印输出线性表
void PrintList(SqList L)
{
	for(int i=0;i>n; 
	cout<<"请依次输入线性表中的数据元素:"< 
第七题 
//7
//将两个有序顺序表合并成为一个新的有序顺序表,并由函数返回结果顺序表

#include
using namespace std;
#define MaxSize 500

 
 typedef struct{
 	int data[MaxSize];
 	int length;
 }SqList;
 
 //初始化顺序表 
 void InitList(SqList &L,int n)
 {
 	for(int i=0;i>L.data[i];
 	L.length=n;
 }
 
 //打印输出顺序表
 void PrintList(SqList L)
 {
 	for(int i=0;iMaxSize)
  		return false;
  	int i=0,j=0,k=0;
  	while(i>n1;
  	cout<<"请按照从小到大的顺序依次输入第一个顺序表的数据元素:"<>n2;
  	cout<<"请按照从小到大的顺序依次输入第二个顺序表的数据元素:"< 
第八题 
//8
//已知在一维数组A[m+n]中依次存放两个线性表
//编写函数,将两个顺序表的位置互换
#include
using namespace std;
#define MaxSize 500

//定义线性表
typedef struct{
	int data[MaxSize];
	int length;	
}SqList;

//初始化线性表
//线性表包括前后两部分
void InitList(SqList &L,int m,int n)
{
	for(int i=0;i>L.data[i];
	L.length=m+n;
}

//输出线性表
void PrintList(SqList L)
{
	for(int i=0;i>m>>n;
	  cout<<"请依次输入数据元素:"< 
第八题标答 
//8 标答
#include
using namespace std;
#define MaxSize 500


//先逆置,再分别将前m个和后n个逆置
void Reverse(int A[],int left,int right,int arraySize)
{
	if(left>=right||right>=arraySize)
		return;
	int mid=(left+right)/2;
	for(int i=0;i>m>>n;
	cout<<"请依次输入数据元素:"<>A[i];
	ExChange(A,m,n,m+n);
	cout<<"调换顺序后得到数组如下:"< 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/665600.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号