【剑指offer】链表相关-链表末尾插入一个节点
2014-02-28 19:55
260 查看
#include<iostream.h> #include <stdio.h> #include <stack> //向链表的末尾添加一个节点 struct ListNode { int m_nValue; ListNode * m_pNext; }; //我的程序 注意第一个参数是一个指向指针的指针 当向一个空链表中插入一个节点时,新插入的节点就是链表的头指针 void AddToTail1(ListNode ** pHead,int value) { //申请新节点 ListNode * newNode=new ListNode(); newNode->m_nValue=value; newNode->m_pNext=NULL; if(pHead == NULL) return; //之前少考虑了空链表的情况 if(*pHead == NULL) { *pHead=newNode; return; } //找最后一个节点 ListNode * p = *pHead; ListNode * q = NULL; while(p!=NULL) { q=p; p=p->m_pNext; } //插入到链表最后 q->m_pNext=newNode; //没有判断当链表为空的时候!! } //书上的例子,未验证pHead为空的情况 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; } } ListNode * CreateLink(int a[],int k) { ListNode * Head=NULL,*q=NULL; for(int i=0;i<k;i++) { ListNode * pNew=new ListNode(); pNew->m_nValue=a[i]; pNew->m_pNext=NULL; if(Head==NULL) { Head=pNew; q=pNew; } else { q->m_pNext=pNew; q=q->m_pNext; } } return Head; } //从头到尾打印列表 void printLink(ListNode * pHead) { ListNode *p=pHead; while(p) { cout<<p->m_nValue<<" "; p=p->m_pNext; } cout<<endl; } void main() { int a[]={1,2,3}; ListNode * Head=CreateLink(a,3); printLink(Head); AddToTail(&Head,6); printLink(Head); }
相关文章推荐
- 【剑指offer】单链表尾部插入一个节点
- 剑指offer2.3.3链表:在链表末尾添加一个节点
- 剑指offer__02__输入一个链表,从尾到头打印链表每个节点的值。
- 牛客网-剑指offer-14-打印一个链表的倒数第k个节点
- java 剑指offer 第三题:输入一个链表,从尾到头打印链表每个节点的值。
- 单向链表末尾插入一个节点(指向指针的指针该怎样理解)
- 剑指offer--给定一个链表,从尾部到头部打印,输出链表节点的值
- 【剑指offer】链表相关-删除value值节点
- 剑指offer——两个链表的第一个公共结点(给出的方法,都是针对有且只有一个公共节点的方法)
- 剑指offer(7)-反转一个链表
- 剑指offer 面试题15 链表中的倒数第k个节点
- 剑指Offer 链表相关问题--从尾到头打印链表、合并两个排序的链表
- [012]链表笔记--在链表中插入一个节点
- Offer题5 链表末尾插入&删除指定值&从头到尾打印
- 剑指offer----链表中环的入口节点----java实现
- 创建一个链表、删除一个节点、插入一个节点--实验
- 剑指offer——链表中倒数第k个节点
- 剑指offer——从尾到头打印链表节点的值
- 【面试题】剑指Offer-13-在O(1)的情况下删除一个节点
- 剑指Offer 37题 两个链表的第一个公共节点 Java版