链表的基本操作
来源:互联网 发布:淘宝购物哪个返利网好 编辑:程序博客网 时间:2024/06/03 23:01
一、先定义好链表的节点结构
template<class DataType>struct pNode
{
DataType data;
pNode<DataType>* next;
pNode(DataType d = 0) :data(d), next(NULL) //在c++中可以在结构中写构造函数
{}
};
二、链表的基本操作
1.链表的构造
template<class DataType>
class LinkList{
private:
pNode<DataType>* head;
public:
typedef pNode<DataType> Node;
LinkList():head(NULL)
{
sum = sum + nn;
nn++;
}
LinkList(LinkList& l)
{
if (l.head)
{
pNode<DataType>* p = l.head;
head = new Node(p->data);
p = p->next;
pNode<DataType>* node = head;
while (p)
{
node->next = new Node(p->data);
node = node->next;
p = p->next;
}
}
else
head = l.head;
}
};
2.链表的尾插
{
if (head == NULL)
{
head = new pNode<DataType>(d);
return;
}
else
{
pNode<DataType>* ret = head;
while (ret->next != NULL)
{
ret = ret->next;
}
ret->next = new pNode<DataType>(d);
}
}
3.链表的头插
{
pNode<DataType>* ret = new pNode<DataType>(d);
ret->next = head;
head = ret;
}
4.链表尾删
{
pNode<DataType>* p = head;
while (p->next->next)
{
p = p->next;
}
free(p->next);
p->next = NULL;
}
5.链表头删
{
pNode<DataType>* p = head->next;
free(head);
head = p;
}
6.打印链表
{
pNode<DataType>* ret = head;
while (ret != NULL)
{
cout << ret->data << "->";
ret = ret->next;
}
printf("NULL\n");
}
7.获取头部
{
return head;
}
8.查找某一节点
{
Node* cur = head;
while (cur)
{
if (cur->data == d)
return cur;
cur = cur->next;
}
return NULL;
}
三、总结
在这里我用C++只实现了链表的一些简单操作,在后续的更新中将会探讨关于链表的其他比较复杂的操作。在这些简单操作中,大家一定要注意细节,否则很容易出现一些低级错误。希望这篇文章对初学C++的同学有所帮助。
阅读全文
0 0
- 链表的基本操作
- 链表的基本操作
- 链表的基本操作
- 链表的基本操作
- 链表的基本操作
- 链表的基本操作
- 链表的基本操作
- 链表的基本操作
- 链表的基本操作
- 链表的基本操作
- 链表的基本操作
- 链表的基本操作
- 链表的基本操作
- 链表的基本操作
- 链表的基本操作
- 链表的基本操作
- 链表的基本操作
- 链表的基本操作
- Android Studio中ADB.exe启动不起来。
- Android Studio 使用 Gradle 打包 Jar
- 通过崩溃地址找出源代码的出错行(未实践)
- Object.create
- 使用CSS实现上下左右居中
- 链表的基本操作
- NYOJ 585 取石子(六)(尼姆博弈)
- Linux备忘1
- socket
- 幂等实现思路和细节
- 第5章 存储Node程序中的数据
- 第10章 Diffuse Shading
- thinkPHP5-渲染模板的方式
- POJ