向升序单向链表中插入一个节点
2015-01-04 16:09
197 查看
#include "OJ.h" /* 功能: 输入一个升序单向链表和一个链表节点,向单向链表中按升序插入这个节点。 输入为空指针的情况视为异常,另外不考虑节点值相等的情况。 输入: ListNode* pListHead 单向链表 ListNode* pInsertNode 新插入节点 输出: ListNode* pListHead 单向链表 返回: 正常插入节点返回链表头指针,其它异常返回空指针 */ ListNode* InsertNodeToList(ListNode* pListHead, ListNode* pInsertNode) { /*在这里实现功能*/ if ((ListNode *)NULL == pListHead ) { return (ListNode *)(NULL); } if ((ListNode *)NULL == pInsertNode ) { return (ListNode *)(NULL); } if (pInsertNode->m_nKey < pListHead->m_nKey) { pInsertNode->m_pNext = pListHead; pListHead = pInsertNode; return (ListNode *)pListHead; } ListNode* p = pListHead; while ((ListNode *)NULL != p->m_pNext && p->m_pNext->m_nKey < pInsertNode->m_nKey) { p = p->m_pNext; } pInsertNode->m_pNext = p->m_pNext; p->m_pNext = pInsertNode; return (ListNode *)pListHead; } int main() { ListNode astListNode[2]; ListNode stInsertNode; ListNode *pListHead; astListNode[0].m_nKey = 2; astListNode[0].m_pNext = &astListNode[1]; astListNode[1].m_nKey = 3; astListNode[1].m_pNext =(ListNode *)(NULL); stInsertNode.m_nKey = 4; stInsertNode.m_pNext =(ListNode *)(NULL); pListHead = InsertNodeToList(astListNode, &stInsertNode); return 0; }
相关文章推荐
- 向升序单向链表中插入一个节点
- 求助 向升序单向链表中插入一个节点 求教程序中哪里错了?
- 向升序单向链表中插入一个节点
- [华为机试练习题]49.向升序单向链表中插入一个节点
- 华为OJ 向升序单向链表中插入一个节点
- 华为机试题:向升序单向链表中插入一个节点
- 单向链表中,如何在给定节点前快速插入一个节点?
- 单向链表中,如何在给定节点前快速插入一个节点?
- 对一个存储学生信息的单向链表,按照学号升序对链表进行排序,每个节点包含了一个学生ID
- 单向链表末尾插入一个节点(指向指针的指针该怎样理解)
- 单向链表中,如何在给定节点前快速插入一个节点?
- 实现一个 链表 有序插入新节点
- 1.01一个单向链表,不知道头节点,一个指针指向其中的一个节点,问如何删除这个指针指向的节点?
- 设计一个整型链表类list,能够实现链表节点的插入、删除、以及链表数据的输出操作。
- 用头插、尾插、按顺序插入创建一个不带头节点的链表
- 单向链表(三) 在指定位置插入新的节点
- 输出一个单向链表的中间节点
- 向循环有序链表内插入一个节点
- 微软面试之13 输入一个单向链表 输出该链表的倒数第k个节点
- 实现双向链表删除一个节点P,在节点P后插入一个节点