顺序访问的线性群体 -- 链表
链表就不进行说明了,直接上模板
单链表的结点模板
template <class T>
class Node {
private:
Node<T> *next;
public:
T data; // 理论放到 private
Node(const T& item, Node<T> *next = 0);
void insertAfter(Node<T> *p);
Node<T> *deleteAfter();
Node<T> *nextNode() const;
};
template <class T>
Node<T>::Node(const T& data, Node<T> *next = 0):data(data), next(next) {}
template <class T>
Node<T> *Node<T>::nextNode() {
return next;
}
template <class T>
void Node<T>::insertAfter(Node<T> *p) {
p->next = next;
next = p;
}
template <class T>
Node<T> *Node<T>::deleteAfter(void) { // 删除操作还要返回是有时需要继续操作删除的结点
Node<T> *tempPtr = next;
if(next == 0)
return 0;
next = tempPtr->next;
return tempPrt;
}
链表类示例
使用 STL 库的链表类模板
从键盘输入 10 个整数,用这些整数生成一个链表,按顺序输出链表中结点的数值。
输入一个待查找整数,在链表中查找该整数,删除所在结点,输出链表
程序结束时清空链表
#include <iostream>
#include "LinkedList.h"
using namespace std;
int main() {
LinkedList<int> list;
// 1
for(int i=0; i<10; i++) {
int item;
cin >> item;
list.insertFront(item);
}
cout << "List : ";
list.reset();
while(! list.endOfList() ) {
cout << list.data() << " ";
list.next();
}
cout << endl;
// 2
int key;
cout << "Please enter some integer neeeded to be deleted: ";
cin >> key;
list.reset();
while(! list.endOfList() ) {
if(list.data() == key)
list.deleteCurrent();
list.next();
}
cout << "list : ";
// 3
list.reset();
while(! list.endOfList() ) {
cout << list.data() << " ";
list.next();
}
cout << endl;
return 0;
}
本文介绍了C++中单链表的基本结构,包括Node模板的定义、常用操作如插入、删除和查找,并提供了创建链表并进行操作的实际示例。通过输入整数构建链表,查找并删除元素,展示了链表在实际应用中的操作流程。
&spm=1001.2101.3001.5002&articleId=124677031&d=1&t=3&u=49d8c9c5021e4d058bb5d8109da6378c)
288

被折叠的 条评论
为什么被折叠?



