首先我需要说明一下Markdown中的代码块格式,在Markdown中使用三个反引号(```)或者一个制表符(Tab键)加上代码语言名称来表示代码块。例如,C++的代码可以用以下方式表示:
#include <iostream>
using namespace std;
int main()
{
cout << "Hello, World!" << endl;
return 0;
}
接下来我们就可以开始讲解如何利用C++简单实现顺序表和单链表的示例代码啦。
1. 实现顺序表
在C++中,可以很容易地使用数组来实现顺序表。以下是一个简单的例子:
#include <iostream>
using namespace std;
const int MAXSIZE = 100;
class SeqList {
public:
SeqList() {
length = 0;
}
bool insert(int pos, int value) {
if (length == MAXSIZE) {
return false;
}
if (pos < 1 || pos > length + 1) {
return false;
}
for (int i = length; i >= pos; i--) {
data[i] = data[i - 1];
}
data[pos - 1] = value;
length++;
return true;
}
bool remove(int pos) {
if (pos < 1 || pos > length) {
return false;
}
for (int i = pos - 1; i < length - 1; i++) {
data[i] = data[i + 1];
}
length--;
return true;
}
void print() {
for (int i = 0; i < length; i++) {
cout << data[i] << " ";
}
cout << endl;
}
private:
int data[MAXSIZE];
int length;
};
int main() {
SeqList list;
list.insert(1, 1);
list.insert(2, 2);
list.insert(3, 3);
list.print(); // 输出 1 2 3
list.remove(2);
list.print(); // 输出 1 3
return 0;
}
在这个代码中,我们定义了一个SeqList
类来实现顺序表。该类包含了如下操作:
insert(int pos, int value)
:在指定位置插入一个元素;remove(int pos)
:删除指定位置的一个元素;print()
:打印整个顺序表。
这个例子还包含了两个对SeqList
类进行测试的示例,分别在第14-16行和第18-20行调用了insert()
、print()
和remove()
方法。
2. 实现单链表
单链表是一种比较常见的数据结构,也比较容易用C++实现。以下是一个简单的例子:
#include <iostream>
using namespace std;
class Node {
public:
int data;
Node *next;
Node(int d = 0, Node *n = NULL) {
data = d;
next = n;
}
};
class LinkedList {
public:
LinkedList() {
head = new Node();
size = 0;
}
~LinkedList() {
Node *p = head;
while (p != NULL) {
Node *q = p;
p = p->next;
delete q;
}
}
bool insert(int pos, int value) {
if (pos < 1 || pos > size + 1) {
return false;
}
Node *p = head;
for (int i = 1; i < pos; i++) {
p = p->next;
}
Node *q = new Node(value, p->next);
p->next = q;
size++;
return true;
}
bool remove(int pos) {
if (pos < 1 || pos > size) {
return false;
}
Node *p = head;
for (int i = 1; i < pos; i++) {
p = p->next;
}
Node *q = p->next;
p->next = q->next;
delete q;
size--;
return true;
}
void print() {
Node *p = head->next;
while (p != NULL) {
cout << p->data << " ";
p = p->next;
}
cout << endl;
}
private:
Node *head;
int size;
};
int main() {
LinkedList list;
list.insert(1, 1);
list.insert(2, 2);
list.insert(3, 3);
list.print(); // 输出 1 2 3
list.remove(2);
list.print(); // 输出 1 3
return 0;
}
这个例子中,我们定义了一个Node
类来表示单链表中的一个结点,其中包含了该结点的数据和指向下一个结点的指针。然后我们定义了一个LinkedList
类来实现单链表,该类包含了如下操作:
insert(int pos, int value)
:在指定位置插入一个结点;remove(int pos)
:删除指定位置的一个结点;print()
:打印整个单链表。
在该代码中,我们同样定义了两个示例来测试LinkedList
类中的方法。
希望上述内容能够对您有帮助,如有问题请随时提出。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:利用C++简单实现顺序表和单链表的示例代码 - Python技术站