c++1-1 设链表的存储结构如下: typedef struct Node { Type data; //数据域;Type: 用户定义数据类型 struct Node *next; //指针域 } Node, *LinkList; 实现链表的基本操作
时间: 2024-09-23 21:08:23 浏览: 39
数据结构c版(1)-线性表之双向带头循环链表代码
在C++中,C风格的链表(也称为头结点链表)通常包含以下几个基本操作:
1. **创建链表**(Create a List)
- 定义一个空链表:使用 NULL 指针初始化一个Node类型的变量作为头节点,并设置其next指针为空。
```cpp
LinkList createEmptyList() {
Node* head = new Node();
head->data = nullptr; // 或者指定默认值
head->next = nullptr;
return head;
}
```
2. **添加元素到链表头部**(Insert at the beginning)
- 创建新的节点,将数据存入,然后将新节点的next指向当前头节点。
```cpp
void insertAtBegin(LinkList& head, Type newData) {
Node* newNode = new Node();
newNode->data = newData;
newNode->next = head;
head = newNode;
}
```
3. **添加元素到链表尾部**(Append to the end)
- 遍历链表,在最后一个节点之后插入新节点。
```cpp
void appendToEnd(LinkList& head, Type newData) {
if (head == nullptr) {
insertAtBegin(head, newData);
return;
}
Node* current = head;
while (current->next != nullptr) {
current = current->next;
}
current->next = new Node();
current->next->data = newData;
current->next->next = nullptr;
}
```
4. **删除特定元素**(Delete an element)
- 删除某个特定数据的节点。如果头节点的数据就是要删除的,需要更新头节点。否则遍历链表查找目标节点。
```cpp
void deleteElement(LinkList& head, Type targetData) {
if (head == nullptr) {
return;
}
if (head->data == targetData) {
Node* temp = head;
head = head->next;
delete temp;
return;
}
Node* current = head;
while (current->next != nullptr && current->next->data != targetData) {
current = current->next;
}
if (current->next != nullptr) {
Node* toDelete = current->next;
current->next = toDelete->next;
delete toDelete;
}
}
```
5. **查找元素**(Search for an element)
- 遍历链表,直到找到目标元素或者到达末尾。
```cpp
bool searchElement(LinkList head, Type targetData) {
Node* current = head;
while (current != nullptr) {
if (current->data == targetData) {
return true;
}
current = current->next;
}
return false;
}
```
6. **遍历链表**(Traverse the list)
- 使用while循环访问每个节点。
```cpp
void traverseList(LinkList head) {
if (head == nullptr) {
return;
}
Node* current = head;
while (current != nullptr) {
std::cout << current->data << " ";
current = current->next;
}
std::cout << "\n";
}
```
以上就是链表的一些基础操作,实际应用中还需要考虑错误处理和其他细节。
阅读全文