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的数据元素。

顺序表算法题

试设计一个算法,删除一个顺序表从第i个元素开始的k个元素

设计一个算法,删除一个顺序表中从第i个元素开始的k个元素。

如何在顺序线性表中第i个位置之前插入新的元素e