链表的添加、查找删除、反向打印c++代码
2018-02-14 20:52
671 查看
c++代码#include<iostream>
#include<stack>
using namespace std;
struct linkNode
{
int data;
linkNode* next;
};
//添加节点到末尾
void addNode(linkNode** head,int data)
{
linkNode* newNode = new linkNode();//开辟内存
newNode->data = data;//创建节点
newNode->next = NULL;
if (*head == NULL)
*head = newNode;//头结点为空时,将此节点赋值给头结点
else
{
linkNode* tempNode = *head;
while (tempNode->next != NULL)
tempNode = tempNode->next;
tempNode->next = newNode;//添加到尾节点上
}
}
//查找并删除特定值
void findDeleteNode(linkNode* *head, int data)
{
if ((head == NULL) ||(*head = NULL))//为空
return;
linkNode *deleteNode = NULL;
if ((*head)->data == data)
{
deleteNode = *head;
(*head) = (*head)->next;
}
else
{
linkNode* tempNode = *head;
while ((tempNode->next != NULL)&&tempNode->next
->data != data)//加next是因为已经判断了head
tempNode = tempNode->next;
if ((tempNode->next != NULL) && tempNode->next
->data == data)
{
deleteNode = tempNode->next;
tempNode->next = tempNode->next->next;
}
if (deleteNode != NULL)
{
delete deleteNode;
deleteNode = NULL;
}
}
}
//输入一个链表的头结点,从尾到头反过来打印每个节点的值
//1 堆栈法
void printInvStack(linkNode *head)
{
stack<linkNode*>nodes;//堆栈的先进后出属性
linkNode* tempNode = head;
while (tempNode != NULL)
{
nodes.push(tempNode);
tempNode = tempNode->next;
}
while (!nodes.empty())
{
tempNode = nodes.top();
cout << tempNode->data << " ";
}
}
//递归法(递归本质是栈结构)
void printInvRecursively(linkNode *head)
{
if (head != NULL)
{
if (head->next != NULL)
printInvRecursively(head->next);
cout << head->data;
}
}
#include<stack>
using namespace std;
struct linkNode
{
int data;
linkNode* next;
};
//添加节点到末尾
void addNode(linkNode** head,int data)
{
linkNode* newNode = new linkNode();//开辟内存
newNode->data = data;//创建节点
newNode->next = NULL;
if (*head == NULL)
*head = newNode;//头结点为空时,将此节点赋值给头结点
else
{
linkNode* tempNode = *head;
while (tempNode->next != NULL)
tempNode = tempNode->next;
tempNode->next = newNode;//添加到尾节点上
}
}
//查找并删除特定值
void findDeleteNode(linkNode* *head, int data)
{
if ((head == NULL) ||(*head = NULL))//为空
return;
linkNode *deleteNode = NULL;
if ((*head)->data == data)
{
deleteNode = *head;
(*head) = (*head)->next;
}
else
{
linkNode* tempNode = *head;
while ((tempNode->next != NULL)&&tempNode->next
->data != data)//加next是因为已经判断了head
tempNode = tempNode->next;
if ((tempNode->next != NULL) && tempNode->next
->data == data)
{
deleteNode = tempNode->next;
tempNode->next = tempNode->next->next;
}
if (deleteNode != NULL)
{
delete deleteNode;
deleteNode = NULL;
}
}
}
//输入一个链表的头结点,从尾到头反过来打印每个节点的值
//1 堆栈法
void printInvStack(linkNode *head)
{
stack<linkNode*>nodes;//堆栈的先进后出属性
linkNode* tempNode = head;
while (tempNode != NULL)
{
nodes.push(tempNode);
tempNode = tempNode->next;
}
while (!nodes.empty())
{
tempNode = nodes.top();
cout << tempNode->data << " ";
}
}
//递归法(递归本质是栈结构)
void printInvRecursively(linkNode *head)
{
if (head != NULL)
{
if (head->next != NULL)
printInvRecursively(head->next);
cout << head->data;
}
}
相关文章推荐
- 链表的添加、查找删除、反向打印c++代码
- 链表的添加、查找删除、反向打印c++代码
- 链表的添加、查找删除、反向打印c++代码
- 链表的添加、查找删除、反向打印c++代码
- 链表的添加、查找删除、反向打印c++代码
- 链表的添加、查找删除、反向打印c++代码
- 链表的添加、查找删除、反向打印c++代码
- 链表的添加、查找删除、反向打印c++代码
- 链表的添加、查找删除、反向打印c++代码
- 链表的添加、查找删除、反向打印c++代码
- 单链表的建立,测长度,打印,删除,插入,逆置c++代码实例及运行结果
- c++ 链表操作:添加、遍历、删除、查找
- 单链表的建立,测长度,打印,删除,插入,逆置c++代码实例及运行结果
- 单链表的建立,测长度,打印,删除,插入,逆置c++代码实例及运行结果
- c++关于结构体动态链表初始化添加删除操作代码
- 单链表的建立,测长度,打印,删除,插入,逆置c++代码实例及运行结果
- 单链表的建立,测长度,打印,删除,插入,逆置c++代码实例及运行结果
- 单链表的建立,测长度,打印,删除,插入,逆置c++代码实例及运行结果
- 单链表的建立,测长度,打印,删除,插入,逆置c++代码实例及运行结果
- 单链表的建立,测长度,打印,删除,插入,逆置c++代码实例及运行结果