数据结构-链表
来源:互联网 发布:linux输入shutdown以后 编辑:程序博客网 时间:2024/06/06 01:08
链表
链表是一种动态的数据结构,在创建链表时,无需知道链表的长度。内存分配是链表在添加结点是才分配的。
单链表的结点定义:
struct ListNode{ int m_nvalue; //数据域 ListNode * m_pNext; //指针域};
链表的操作:
向链表的末尾添加结点
void AddToTail(ListNode** pHead, int value){ListNode* pNew = new ListNode();pNew->m_nValue = value;pNew->m_pNext = NULL;if(*pHead == NULL){*pHead = pNew;}else{ListNode* pNode = *pHead;while(pNode->m_pNext != NULL)pNode = pNode->m_pNext;pNode->m_pNext = pNew;}}
在链表中找到第一个含有某值的结点并删除该结点的代码
void RemoveNode(ListNode** pHead, int value){if(pHead == NULL || *pHead == NULL)return ;ListNode* pToBeDeleted = NULL;if((*pHead)->m_nValue == value){pToBeDeleted = *pHead;*pHead = (*pHead)->m_pNext;}else{ListNode* pNode = *pHead;while(pNode->m_pNext != NULL && pNode->m_pNext->m_nValue != value)pNode = pNode->m_pNext;if(pNode->m_pNext != NULL && pNode->m_pNext->m_nValue == value){pToBeDeleted = pNode->m_pNext;pNode->m_pNext = pNode->m_pNext->m_pNext;}}if(pToBeDeleted != NULL){delete pToBeDeleted ;pToBeDeleted = NULL;}}
5.输入一个链表的头结点,从尾到头反过来打印出每个结点的值。(循环、递归、栈)
链表的结点定义:
struct ListNode{
int m_nKey;
ListNode* m_pNext;
};
解法1:
void PrintListReversingly_Iteratively(ListNode* pHead){std::stack<ListNode*> nodes;ListNode* pNode = pHead;while(pNode != NULL){nodes.push(pNode);pNode = pNode->m_pNext;}while(!nodes.empty()){pNode = nodes.top();printf("%d\t", pNode->m_nValue);nodes.pop();}}
利用栈实现逆序输出。每经过一个结点时,把该结点放入到一个栈中。当遍历完整个链表后,再从栈顶开始逐个输出结点的值。
解法2:
void PrintListReversingly_Recursively(ListNode* pHead){if(Head != NULL){if(pHead->m_pNext != NULL){PrintListReversingly_Recursively(pHead->m_pNext);}printf("%d\t", pHead->m_nValue);}}
每次访问一个结点时,先递归输出它后面的结点,再输出该结点自身。
测试用例:
(1)功能测试(输入的链表有多个结点,输入的链表只有一个结点)。
(2)特殊输入测试(输入的链表头结点指针为NULL)
阅读全文
0 0
- 数据结构---链表
- 数据结构 - 链表
- 【数据结构】链表
- 数据结构-链表
- '数据结构' 链表
- 数据结构-链表
- 【数据结构】链表
- 数据结构--链表
- 【数据结构】 链表
- 数据结构--链表
- 数据结构-链表
- 数据结构 - 链表
- 链表 - 数据结构
- 数据结构:链表
- [数据结构]链表
- 数据结构--链表
- 【数据结构】链表
- 数据结构-链表
- CentOS上以源码的方式安装Redis笔记
- 198. House Robber(哈哈哈这个简单)
- dede的{channelartlist}标签中的判断语句
- 新文档
- Redis源码剖析——RDB持久化
- 数据结构-链表
- dubbo-2
- 子序列和
- Android开发实战系列
- 【IPFS】IPFS部署分布式项目到开发机的基础实践
- 8.12网易内推笔试题:堆棋子
- [设计模式](三):单例模式(含kotlin实现)
- POI个人使用小记
- CoordinatorLayout的浅析