Das Jisoft-Experiment „Objektorientierte Programmierung“ der Universität Shenzhen umfasst 15 Funktionsvorlagen und Klassenvorlagen

A. Begrenzte Array-Vorlagenklasse (Klassenvorlage)

Themenbeschreibung

Schreiben Sie eine begrenzte Array-Vorlage BoundArray(das heißt, überprüfen Sie den Indexverweis auf das Array-Element und beenden Sie die Ausführung des Programms, wenn der Index außerhalb der Grenzen liegt), in der verschiedene Datentypen gespeichert werden können. Es ist erforderlich, die Methode zum Sortieren des Arrays sortund die Methode zum Durchsuchen des Arrays zu implementieren search.

eingeben

Geben Sie zuerst t in die erste Zeile ein, um anzuzeigen, dass t Testfälle vorhanden sind

Geben Sie die Daten für jeden Testfall ab der zweiten Zeile ein.

Geben Sie zuerst den Datentyp, IDarstellung int, DDarstellung double, CDarstellung charund dann die Anzahl der Elemente im Array ein

Geben Sie dann jedes Element ein

Geben Sie abschließend das zu suchende Element ein

Ausgang

Geben Sie zunächst die Elemente sortiert von klein nach groß aus

Geben Sie dann das Ergebnis der Suche nach dem Element aus. Wenn es gefunden wird, geben Sie den Index aus. Wenn es nicht gefunden wird, geben Sie es aus-1

Eingabebeispiel 1

2
I 2
1 2
2
D 3
3,5 6,2 2,9
2,1

Ausgabebeispiel 1

1 2
1
2,9 3,5 6,2
-1

AC-Code

#include<bits/stdc++.h>
using namespace std;

template<class T>
class BoundArray {
    
    
	int size;
	T* p;
public:
	BoundArray() {
    
    
		cin >> size;
		p = new T[size];
		for (int i = 0; i < size; i++)
			cin >> p[i];
	}

	~BoundArray()
	{
    
    
		delete[]p;
	}

	void sort() {
    
    
		make_heap(p, p + size);
		sort_heap(p, p + size);
	}

	int search(T key) {
    
    
		for (int i = 0; i < size; i++) {
    
    
			if (key == p[i])
				return i;
		}
		return -1;
	}

	void print() {
    
    
		for (int i = 0; i < size; i++)
			cout << p[i] << " ";
		cout << endl;
	}


};


int main() {
    
    
	int t;
	cin >> t;
	while (t--)
	{
    
    
		char ch;
		cin >> ch;
		if (ch == 'I') {
    
    
			BoundArray<int>l;
			l.sort();
			l.print();
			int key;
			cin >> key;
			cout << l.search(key) << endl;
		}
		else if (ch == 'D') {
    
    
			BoundArray<double>l;
			l.sort();
			l.print();
			double key;
			cin >> key;
			cout << l.search(key) << endl;
		}
		else if (ch == 'C') {
    
    
			BoundArray<char>l;
			l.sort();
			l.print();
			char key;
			cin >> key;
			cout << l.search(key) << endl;
		}


	}
	return 0;
}

B. Einfache Klassenvorlagen (Klassenvorlagen)

Themenbeschreibung

Definieren Sie eine Listenklasse, die Attribute enthält: eine Liste von Werten (dargestellt durch ein Array mit einer Länge von 100), Datenlänge (die tatsächliche Anzahl von Daten); enthaltene Methoden: Initialisierung, Einfügen, Löschen und Drucken Methode ist definiert als:

1) Initialisieren Sie, akzeptieren Sie externe Parameter, speichern Sie die Daten in der Werteliste und initialisieren Sie alle nicht verwendeten Listenteile auf -1

2) Einfügen, akzeptieren Sie die Einfügeposition und den Einfügewert des externen Parameters. Die Einfügeposition wird ab 0 berechnet. Beachten Sie, dass die Originaldaten ab der Einfügeposition um ein Bit nach hinten verschoben werden müssen und die Datenlänge +1 beträgt

3) Löschen, akzeptieren Sie die Löschposition externer Parameter. Die Löschposition wird ab 0 berechnet. Beachten Sie, dass die Originaldaten ab dem letzten Bit der Löschposition um ein Bit nach vorne verschoben werden müssen und die Datenlänge -1 beträgt

4) Drucken Sie die in einer Zeile enthaltenen Daten aus, geben Sie sie in der Reihenfolge ihrer Position aus und trennen Sie die Daten durch ein einzelnes Leerzeichen

Verwenden Sie die Methode der Klassenvorlage, damit diese Klasse den Ganzzahltyp intund den Gleitkommatyp doubleunterstützt

eingeben

In der ersten Zeile wird zunächst der Parameter n eingegeben, um anzuzeigen, dass n Daten vorhanden sind, und dann werden n Ganzzahlen eingegeben

In der zweiten Zeile werden zwei Parameter eingegeben, die die Einfügeposition und den Einfügewert angeben. Der Wert ist eine Ganzzahl

Die dritte Zeile gibt den Löschort ein

Geben Sie in der vierten Zeile zunächst den Parameter n ein, um anzugeben, dass n Daten vorhanden sind, und geben Sie dann n Gleitkommazahlen ein

In der fünften Zeile werden zwei Parameter eingegeben, die die Einfügeposition und den Einfügewert angeben. Der Wert ist eine Gleitkommazahl

Die sechste Zeile gibt die Löschposition ein

Ausgang

Führen Sie für die ersten drei Eingabezeilen jeweils eine Initialisierung, Einfügung und Löschung durch und rufen Sie die Druckmethode auf, um die in der Liste enthaltenen ganzzahligen Daten auszugeben

Führen Sie für die nächsten drei Eingabezeilen jeweils eine Initialisierung, Einfügung und Löschung durch und rufen Sie die Druckmethode auf, um die in der Liste enthaltenen Gleitkommadaten auszugeben

Eingabebeispiel 1

5 11 22 33 44 55
2 888
4
5 1,1 2,2 3,3 4,4 5,5
2 88,8
3

Ausgabebeispiel 1

11 22 888 33 55
1,1 2,2 88,8 4,4 5,5

#include<bits/stdc++.h>
using namespace std;

template<class T>
class List {
    
    
	vector<T>v;
public:
	List() {
    
    
		int len;
		cin >> len;
		v.resize(len);
		for (auto& it : v)
			cin >> it;
	}

	void insert(int index, T value) {
    
    
		v.insert(v.begin() + index, value);
	}

	void remove(int index) {
    
    
		v.erase(v.begin() + index);
	}

	void print() {
    
    
		for (int i = 0; i < v.size(); i++) {
    
    
			if (i)
				cout << " ";
			cout << v[i];
		}
		cout << endl;
	}

};

int main() {
    
    
	List<int>l1;
	int idx, value;
	cin >> idx >> value;
	l1.insert(idx, value);
	cin >> idx;
	l1.remove(idx);
	l1.print();

	List<double>l2;
	int idx1;
	double value1;
	cin >> idx1 >> value1;
	l2.insert(idx1, value1);
	cin >> idx1;
	l2.remove(idx1);
	l2.print();

	return 0;
}

C. Matrix-Klassenvorlage (Klassenvorlage)

Themenbeschreibung

Entwerfen Sie eine Matrix-Klassenvorlage Matrix, die Daten jedes Datentyps unterstützt.

Es ist erforderlich, mindestens zwei Mitgliedsfunktionen zu enthalten: die Matrixtranspositionsfunktion „Transport“ und die Ausdruckfunktion „Print“.

Schreiben Sie die Hauptfunktion zum Testen und rufen Sie die Mitgliedsfunktionen der Klasse auf, um die Transposition und Ausgabe abzuschließen.

eingeben

Geben Sie zuerst t in die erste Zeile ein, um anzuzeigen, dass t Testfälle vorhanden sind

Geben Sie die Daten für jeden Testfall ab der zweiten Zeile ein.

Geben Sie zuerst den Datentyp ein, I bedeutet int, D bedeutet double, C bedeutet char, und geben Sie dann zwei Parameter m und n ein, die die Zeilen bzw. Spalten der Matrix darstellen

Geben Sie als Nächstes die Elemente der Matrix ein, insgesamt m Zeilen, jede Zeile enthält n Daten

Ausgang

transponierte Matrix ausgeben

Eingabebeispiel 1

2
I 2 3
1 2 3
4 5 6
C 3 3
abc
def
ghi

Ausgabebeispiel 1

1 4
2 5
3 6
adg
beh
cfi

AC-Code

#include<bits/stdc++.h>
using namespace std;

template<class T>
class Matrix {
    
    
	vector<vector<T>>v;
	int n, m;
public:
	Matrix() {
    
    
		cin >> n >> m;
		v.resize(n);
		for (int i = 0; i < n; i++)
			v[i].resize(m);
		for (int i = 0; i < n; i++)
			for (int j = 0; j < m; j++)
				cin >> v[i][j];
	}

	void transport() {
    
    
		vector<vector<T>>v1;
		v1.resize(m);
		for (int i = 0; i < m; i++)
			v1[i].resize(n);

		for (int i = 0; i < n; i++)
			for (int j = 0; j < m; j++)
				v1[j][i] = v[i][j];
		v = v1;
		swap(n, m);
	}

	void print() {
    
    
		for (int i = 0; i < n; i++) {
    
    
			for (int j = 0; j < m; j++) {
    
    
				if (j)cout << " ";
				cout << v[i][j];
			}
			cout << endl;
		}
	}
};

int main() {
    
    
	int t;
	cin >> t;
	while (t--)
	{
    
    
		char ch;
		cin >> ch;
		if (ch == 'I') {
    
    
			Matrix<int>m;
			m.transport();
			m.print();
		}
		else if (ch == 'D') {
    
    
			Matrix<double>m;
			m.transport();
			m.print();
		}else if (ch == 'C') {
    
    
			Matrix<char>m;
			m.transport();
			m.print();
		}
	}
	return 0;
}

D. Sortierfunktionsvorlage

Themenbeschreibung

Schreiben Sie eine Funktionsvorlage mysort, die ein Array von n Elementen in aufsteigender Reihenfolge sortiert, wobei der Elementtyp ein Basisdatentyp oder ein Punktobjekt sein kann (verglichen mit dem Abstand vom Punkt zum Ursprung). (Es ist erforderlich, dass die von C++ bereitgestellte Sortierfunktionsvorlage nicht verwendet werden kann.)

eingeben

Geben Sie in der ersten Zeile die Anzahl der Tests ein

Geben Sie für jeden Test zwei Zeilen ein. Geben Sie in die erste Zeile einen Großbuchstaben ein, um den Array-Typ anzugeben, I, um den Ganzzahltyp anzugeben, S, um den Zeichenfolgentyp anzugeben, D, um den Zahlentyp mit doppelter Genauigkeit anzugeben, und P, um den Punkt anzugeben und geben Sie schließlich n ein, um die Länge des Arrays anzugeben. Zeile 2 gibt n Daten ein.

Ausgang

Geben Sie pro Test eine Zeile mit sortierten Ergebnissen aus

Eingabebeispiel 1

4
I 10
15 3 51 27 9 35 78 14 65 8
D 3
-11,3 25,42 13,2
P 6
1,1 2,2 2,4 -6,5 12 32 1,2 1,3 -3,5 0,1 9,2 1,1
S 4
Sandy David Eason Cindy

Ausgabebeispiel 1

3 8 9 14 15 27 35 51 65 78
-11,3 13,2 25,42
(1,2, 1,3) (1,1, 2,2) (-3,5, 0,1) (2,4, -6,5) (9,2, 1,1) (12,0, 32,0)
Cindy David Eason Sandy

AC-Code

#include<bits/stdc++.h>
using namespace std;

template<class T>
class MySort;

class Point {
    
    
	double x, y;
	template<class T>
	class MySort;
public:
	Point() {
    
    }

	double getDistance() const {
    
    
		return sqrt(x * x + y * y);
	}

	bool operator <(const Point& p)const {
    
    
		return getDistance() < p.getDistance();
	}

	friend ostream& operator << (ostream& output, Point& p) //定义运算符“<<”重载函数
	{
    
    
		output << fixed << setprecision(1) << "(" << p.x << ", " << p.y << ")";
		return output;
	}

	friend istream& operator >> (istream& input, Point& p) //定义运算符“<<”重载函数
	{
    
    
		input >> p.x >> p.y;
		return input;
	}


};



template<class T>
class MySort {
    
    
	vector<T>v;
	class Point;
public:
	MySort() {
    
    
		int size;
		cin >> size;
		v.resize(size);
		for (auto& it : v) {
    
    
			cin >> it;
		}

		make_heap(v.begin(), v.end());
		sort_heap(v.begin(), v.end());

		for (int i = 0; i < size; i++) {
    
    
			cout << v[i] << " ";
		}
		cout << endl;
	}
};

int main() {
    
    
	int t;
	cin >> t;
	while (t--)
	{
    
    
		char ch;
		cin >> ch;
		if (ch == 'I') {
    
    
			MySort<int>s;
		}
		else if (ch == 'D') {
    
    
			MySort<double>s;
		}
		else if (ch == 'S') {
    
    
			MySort<string>s;
		}
		else if (ch == 'P') {
    
    
			MySort<Point>s;
		}

	}
	return 0;
}

E. Objektadditionsfunktionsvorlage

Themenbeschreibung

Die Uhrenklasse CClock hat Stunden, Minuten und Sekunden; die RMB-Klasse CRmb hat drei Datenelemente: Yuan, Winkel und Minuten. Versuchen Sie, eine Vorlage für die Funktion „add“ für die paarweise Addition für diesen Klassenobjekttyp zu definieren, einschließlich drei Parametern: 2 Objekte und ein int, das die Basis darstellt. (Erfordert Methoden, die nicht mit Funktionen überladen werden können)

Die Hauptfunktion sieht so aus:

CUhr c1(…), c2(…), c;

c = add(c1, c2, 60);

cout << c << endl;

CRmb r1(…), r2(…), r;

r = add(r1, r2, 10);

cout << r << endl;

eingeben

Die Stunde, Minute und Sekunde des ersten Uhrenobjekts

Die Stunde, Minute und Sekunde des zweiten Uhrenobjekts

Yuan-Winkelminuten des ersten RMB-Objekts

Yuan-Winkelminuten des zweiten RMB-Objekts

Ausgang

Das Ergebnis des Hinzufügens von zwei Uhrenobjekten

Das Ergebnis des Hinzufügens von zwei RMB-Objekten

Eingabebeispiel 1

15 34 25
7 25 36
5
6 7 3 4 5

Ausgabebeispiel 1

23 0 1
9 1 2

AC-Code

#include<bits/stdc++.h>
using namespace std;

class CClock {
    
    
	int h, m, s;
public:
	CClock() {
    
    
		cin >> h >> m >> s;
	}

	CClock(int h, int m, int s) :
		h(h),
		m(m),
		s(s) {
    
    }

	template<class T>
	friend T add(T, T, int);
	int getSumSecond(int n) {
    
    
		return s + m * n + h * n * n;
	}

	friend CClock add(CClock& a, CClock& b, int n) {
    
    
		int sum = a.getSumSecond(n) + b.getSumSecond(n);
		int hour = sum / (n * n);
		sum = sum % (n * n);
		int minu = sum / n;
		int sece = sum % n;
		return CClock(hour, minu, sece);
	}

	void print() {
    
    
		cout << h << " " << m << " " << s;
	}

	friend ostream& operator << (ostream& output, CClock& p) //定义运算符“<<”重载函数
	{
    
    
		p.print();
		return output;
	}

};

class RMB {
    
    
	int y, j, f;
public:
	RMB(int y, int j, int f) :y(y), j(j), f(f)
	{
    
    

	}

	RMB() {
    
     cin >> y >> j >> f; }

	int getSumFen(int n) {
    
    
		return f + j * n + y * n * n;
	}



	friend RMB add(RMB& a, RMB& b, int n) {
    
    
		int sum = a.getSumFen(n) + b.getSumFen(n);
		int hour = sum / (n * n);
		sum = sum % (n * n);
		int minu = sum / n;
		int sece = sum % n;
		return RMB(hour, minu, sece);
	}

	void print() {
    
    
		cout << y << " " << j << " " << f;
	}

	friend ostream& operator << (ostream& output, RMB& p) //定义运算符“<<”重载函数
	{
    
    
		p.print();
		return output;
	}

	template<class T>
	friend T add(T, T, int);
};

template<class T>
T add(T a, T b, int n) {
    
    
	return add(a, b, n);
}

int main() {
    
    
	CClock c1, c2;
	CClock c = add(c1, c2, 60);
	cout << c << endl;
	RMB r1, r2;
	RMB r = add(r1, r2, 10);
	cout << r << endl;
	return 0;
}

F. Funktionsvorlagen in umgekehrter Reihenfolge ausgeben

Themenbeschreibung

Schreiben Sie eine Funktionsvorlage reverse, die Daten in umgekehrter Reihenfolge ausgibt (die umgekehrte Reihenfolge komplexer Zahlen ist die Permutation von Real- und Imaginärteilen).

eingeben

Geben Sie in der ersten Zeile die Anzahl der Tests ein

Geben Sie für jeden Test eine Zeile ein, geben Sie zunächst einen Großbuchstaben ein, um den Datentyp anzugeben, I für Ganzzahl, D für Doppel, S für Zeichenfolge, C für komplexe Objekte, und geben Sie schließlich die Daten ein.

Ausgang

Geben Sie eine Zeile pro Test aus, Daten in umgekehrter Reihenfolge

Eingabebeispiel 1

5
I 123456
D -235,172
S thisisatest
C -123 456
C 123 -456

Ausgabebeispiel 1

654321
-271,532
Cetace-Ziel
456-123
-456+123

Hinweis

Eine Typkonvertierungsfunktion kann verwendet werden, um ein komplexes Zahlenobjekt in eine Zeichenfolge umzuwandeln. Die folgende Methode kann in der Vorlagenfunktion verwendet werden, um eine numerische Variable a in eine Zeichenfolgenvariable s zu konvertieren: #include "sstream"...ostringstream os; string s; os << a ; s = os.str();

#include<bits/stdc++.h>
using namespace std;

class Complex {
    
    
	double r, i;
public:
	Complex() {
    
     cin >> r >> i; }

	friend ostream& operator<<(ostream& output, Complex& c) {
    
    
		output << c.r;
		if (!c.i)
			return output;
		if (c.i > 0)
			cout << "+";
		cout << c.i;
		return output;
	}

	friend istream& operator>>(istream& input, Complex& c) {
    
    
		input >> c.r >> c.i;
		return input;
	}


	friend void reverse(Complex&c) {
    
    
		swap(c.r, c.i);
		cout << c << endl;
	}

};



template<class T>
void reverse(T t) {
    
    
	string s = to_string(t);
	//if (typeid(t) == typeid(double)) {
    
    
	//	while (*s.rbegin()=='0'){
    
    
	//		s.pop_back();
	//	}
	//}

	reverse(s.begin(), s.end());

	if (*s.rbegin() == '-') {
    
    
		s.pop_back();
		cout << "-";
	}
	
	if (typeid(t) == typeid(int)) {
    
    
		cout << stoi(s) << endl;
		return;
	}

	if (typeid(t) == typeid(double)) {
    
    
		cout << stod(s) << endl;
		return;
	}

	cout << s << endl;
}

void reverse(string &s) {
    
    
	reverse(s.begin(), s.end());
	cout << s << endl;
}



int main() {
    
    
	int t;
	cin >> t;
	while (t--)
	{
    
    
		char ch;
		cin >> ch;
		string t1;
		if (ch == 'I') {
    
    
			int t1;
			cin >> t1;
			reverse<int>(t1);
		}
		else if (ch == 'D') {
    
    
			double t1;
			cin >> t1;
			reverse<double>(t1);
		}
		else if (ch == 'S') {
    
    
			string t1;
			cin >> t1;
			reverse(t1);
		}

		else {
    
    
			Complex t1;
			reverse(t1);
		}

	}

}

G. Klassenvorlage für verknüpfte Listen

Themenbeschreibung

Die einzelne verknüpfte Listenklasse CIntList, deren Knotendatentyp int ist, kann wie folgt definiert werden:

Klasse CNode

{

öffentlich:

int-Daten;

CNode *next;

};

Klasse CIntList

{

Privatgelände:

CNode *head;

öffentlich:

CIntList();

void append(int a); // Am Ende der verknüpften Liste hinzufügen

void insert(int a, int n); //Nach dem n-ten Knoten hinzufügen

void remove(int n); //Entferne den n-ten Knoten

int get(int n); //Die Daten des n-ten Knotens zurückgeben

void set(int a, int n); //Ändern Sie die Daten des n-ten Knotens in a

void print();

~CIntList();

};

Versuchen Sie, es in eine Klassenvorlage CList umzuwandeln, deren Knotendatentyp durch Parameter dargestellt wird.

eingeben

Geben Sie in der ersten Zeile die Anzahl der Tests ein

Geben Sie für jeden Test 5 Zeilen ein. Das Format lautet:

Datentyp (I:int, D:double, S:string) Anzahl der Daten n Daten 1 Daten 2 … Daten n

Knotennummerdaten einfügen (0 bedeutet Einfügen vor dem ersten Knoten).

Knotennummer zurückgeben

Knotennummer löschen

Knotennummerndaten ändern

Ausgang

Jeder Test gibt zwei Zeilen aus. Die erste Zeile gibt die durch die Rückgabeoperation erhaltenen Daten aus (wenn ein Fehler auftritt, wird ein Fehler ausgegeben), und die zweite Zeile gibt nach allen Operationen die Daten aller Knoten in der verknüpften Liste aus.

Eingabebeispiel 1

3
I 5 2 3 5 7 3
1 40
7
7
6 -10
D 6 1,1 2,3 10,05 0,0 -1,8 5,9
4 60,4
5
1
3 -3,7
S 4 Dies ist ein Test.
0 gut
1
8
4 Arbeit

Ausgabebeispiel 1

Fehler
2 40 3 5 7 -10
60,4
2,3 10,05 -3,7 60,4 -1,8 5,9
gut
gut Dies ist ein Arbeitstest.

AC-Code

#include<bits/stdc++.h>
using namespace std;

template<class T>
struct CNode
{
    
    
	T data;
	CNode<T>* next;
	CNode() {
    
     next = NULL; }
	CNode(T d, CNode<T>* n = NULL) {
    
    
		data = d;
		next = n;
	}
};

template<class T>
class List {
    
    
	int len;
	CNode<T>* head;
public:
	List() {
    
    
		cin >> len;
		head = new CNode<T>;
		CNode<T>* p = head;
		for (int i = 0; i < len; i++) {
    
    
			p->next = new CNode<T>;
			p = p->next;
			cin >> p->data;
		}
	}

	void append(T a) {
    
    
		CNode<T>p = head;
		while (p) {
    
    
			p = p->next;
		}
		p = new CNode<T>(a);
		len++;
	}

	void insert(T a, int n) {
    
    
		if (n < 0 || n > len)
			return;

		CNode<T>* p = head;

		for (int i = 0; i < n; i++) {
    
    
			p = p->next;
		}

		CNode<T>* s = new CNode<T>(a, p->next);
		p->next = s;
		len++;
	}

	void remove(int n) {
    
    
		if (n < 0 || n >= len)
			return;

		CNode<T>* p = head;
		for (int i = 0; i < n; i++) {
    
    
			p = p->next;
		}
		CNode<T>* s = p->next;
		p->next = s->next;
		delete s;
		len--;
	}

	void set(T a, int n) {
    
    
		if (n < 0 || n >= len)
			return;
		CNode<T>* p = head->next;
		for (int i = 0; i < n; i++) {
    
    
			p = p->next;
		}
		p->data = a;
	}

	void print() {
    
    
		CNode<T>* p;
		for (p = head->next; p->next; p = p->next)
			cout << p->data << " ";
		cout << p->data << endl;
	}

	T get(int n) {
    
    
		CNode<T>* p = head->next;
		for (int i = 0; i < n; i++)
			p = p->next;
		return p->data;
	}

	int getSize() {
    
     return len; }
};

int main() {
    
    
	int t;
	cin >> t;
	while (t--)
	{
    
    
		char ch;
		cin >> ch;
		if (ch == 'I') {
    
    
			List<int>l;
			int a;
			int n;
			cin >> n >> a;
			l.insert(a, n);

			cin >> n;
			if (n<1 || n>l.getSize()) {
    
    
				puts("error");
			}
			else {
    
    
				cout << l.get(n - 1) << endl;
			}

			cin >> n;
			l.remove(n - 1);

			cin >> n >> a;
			l.set(a, n - 1);

			l.print();
		}
		else if (ch == 'D') {
    
    
			List<double>l;
			double a;
			int n;
			cin >> n >> a;
			l.insert(a, n);

			cin >> n;
			if (n<1 || n>l.getSize()) {
    
    
				puts("error");
			}
			else {
    
    
				cout << l.get(n - 1) << endl;
			}

			cin >> n;
			l.remove(n - 1);

			cin >> n >> a;
			l.set(a, n - 1);

			l.print();
		}
		else if (ch == 'S') {
    
    
			List<string>l;
			string a;
			int n;
			cin >> n >> a;
			l.insert(a, n);

			cin >> n;
			if (n<1 || n>l.getSize()) {
    
    
				puts("error");
			}
			else {
    
    
				cout << l.get(n - 1) << endl;
			}

			cin >> n;
			l.remove(n - 1);

			cin >> n >> a;
			l.set(a, n - 1);

			l.print();
		}

	}
}

Ich denke du magst

Origin blog.csdn.net/weixin_46655675/article/details/129334487
Empfohlen
Rangfolge