C++数据结构,写一种算法,从顺序表删除第i个元素开始的第k个元素
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++数据结构,写一种算法,从顺序表删除第i个元素开始的第k个元素相关的知识,希望对你有一定的参考价值。
#include <cstring>#include <cassert>
#include <iostream>
using namespace std;
//定义的顺序表类
template <class T>
class SqList
private:
static const int MAX;
int count;
T data[MAX];
public:
SqList()
:count(0)
T& get(int idx)
assert(idx >= 0 && idx < count);
return data[idx];
SqList<T>& insert(int idx, T elem)
assert(count < MAX);
assert(idx >= 0 && idx <= count);
int i;
int j;
for(i = count - 1; i >=idx; i--)
data[i + 1] = data[i];
data[idx] = elem;
++count;
return *this;
T remove(int idx) //删除下标为idx的元素
assert(idx >=0 && idx < count);
int i;
int j;
T elem = data[idx];
for(i = idx; i < count - 1; i++)
data[i] = data[i + 1];
--count;
return elem;
T remove(int i, int k) //删除从下标i开始的第k个元素
return remove(i + k - 1);
SqList<T>& push(T elem)
return insert(count, elem);
SqList<T>& operator <<(T elem)
return push(elem);
T& operator[] (int idx)
return get(idx);
int capacity() const
return count;
void output() const
int i;
for(i = 0; i < count; i++)
cout << data[i] << " " << endl;
cout << endl;
;
template <class T>
const int SqList<T>::MAX = 20;
int main()
SqList<int> sq;
sq << 2 << 3 << 4 << 5;
sq.output();
sq.insert(1, 11);
sq.output();
cout << "删除了: " << sq.remove(1,3) << endl;
sq.output();
return 0;
参考技术A #include
<cstring>
#include
<cassert>
#include
<iostream>
using
namespace
std;
//定义的顺序表类
template
<class
T>
class
SqList
private:
static
const
int
MAX;
int
count;
T
data[MAX];
public:
SqList()
:count(0)
T&
get(int
idx)
assert(idx
>=
0
&&
idx
<
count);
return
data[idx];
SqList<T>&
insert(int
idx,
T
elem)
assert(count
<
MAX);
assert(idx
>=
0
&&
idx
<=
count);
int
i;
int
j;
for(i
=
count
-
1;
i
>=idx;
i--)
data[i
+
1]
=
data[i];
data[idx]
=
elem;
++count;
return
*this;
T
remove(int
idx)
//删除下标为idx的元素
assert(idx
>=0
&&
idx
<
count);
int
i;
int
j;
T
elem
=
data[idx];
for(i
=
idx;
i
<
count
-
1;
i++)
data[i]
=
data[i
+
1];
--count;
return
elem;
T
remove(int
i,
int
k)
//删除从下标i开始的第k个元素
return
remove(i
+
k
-
1);
SqList<T>&
push(T
elem)
return
insert(count,
elem);
SqList<T>&
operator
<<(T
elem)
return
push(elem);
T&
operator[]
(int
idx)
return
get(idx);
int
capacity()
const
return
count;
void
output()
const
int
i;
for(i
=
0;
i
<
count;
i++)
cout
<<
data[i]
<<
"
"
<<
endl;
cout
<<
endl;
;
template
<class
T>
const
int
SqList<T>::MAX
=
20;
int
main()
SqList<int>
sq;
sq
<<
2
<<
3
<<
4
<<
5;
sq.output();
sq.insert(1,
11);
sq.output();
cout
<<
"删除了:
"
<<
sq.remove(1,3)
<<
endl;
sq.output();
return
0;
试设计一个算法,删除一个顺序表从第i个元素开始的k个元素
- 试设计一个算法,删除一个顺序表从第i个元素开始的k个元素
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define OK 1
#define ERROR 0
#define MAXSIZE 20
typedef int ElemType;
typedef int Status;
typedef struct
ElemType data[MAXSIZE];
int Length;
SqList;
//初始化顺序表
Status InitSqList(SqList * L)
L->Length=0;
return OK;
//顺序表的建立
Status Create(SqList * L,int n)
srand(time(0));
for(int i=0;i<n;i++)
L->data[i]=rand()%100+1;
L->Length++;
return OK;
//顺序表的删除
Status Delete(SqList * L,int Location)
if(L->Length==0) //线性表为空
return ERROR;
if(Location<L->Length)
for(int i=Location;i<L->Length;i++)
L->data[i-1]=L->data[i];
L->Length--;
return OK;
void Print(SqList * L)
for(int i=0;i<L->Length;i++)
printf("%d ",L->data[i]);
printf("\\n");
int main()
SqList L;
int ElemNumber;
int Location,Number;
InitSqList(&L);
printf("请输入元素个数:\\n");
scanf("%d",&ElemNumber);
Create(&L,ElemNumber);
Print(&L);
printf("请输入删除的位置和删除的元素个数:\\n");
scanf("%d%d",&Location,&Number);
if(Number>=L.Length)
printf("输入有误\\n");
return 0;
else
while(Number--)
Delete(&L,Location);
Print(&L);
return 0;
以上是关于C++数据结构,写一种算法,从顺序表删除第i个元素开始的第k个元素的主要内容,如果未能解决你的问题,请参考以下文章
数据结构 已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度O(n)空间复杂度为O的算法,该算法删除线性表中所有值为item的数据元素。
数据结构 已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度O(n)空间复杂度为O的算法,该算法删除线性表中所有值为item的数据元素。