线性表(顺序表和链表)
(有一个大神朋友跟我说,学数据结构,就得自己动手写出这是什么,用程序做出它是怎么做的)
我们接触的数据结构有:线性结构和非线性结构。
我们常见到的线性结构:线性表、栈、队列
今天我们来看看这个一直说到的线性表。
关于线性表
定义:线性表是具有相同数据类型的n(n>=0)个数据元素的有限序列。(n为表长,n=0时线性表是一个空表)
特点:①元素个数有限;②具有逻辑上的顺序性,元素有先后次序之分;③除表头元素外,每个元素有且仅有一个直接前驱;④除表尾元素外,每个元素有且仅有一个直接后继;⑤各元素的数据类型相同(占用相同大小的存储空间)
线性表的链式表示
<代码实现:C/C++>
template <typename T>
struct list_node {
T data;
list_node* next;
list_node(T data) {
this->data = data;
this->next = nullptr;
}
list_node() = default;
};
template <typename T>
class MyList {
private:
list_node<T>* head;
int size;
public:
MyList() {
size = 0;
head = new list_node<T>;
assert(head != nullptr);
}
~MyList() {
list_node<T