【剑指offer】单链表尾部插入一个节点
#include <iostream> using namespace std; //链表结构体 struct ListNode { int m_Value; ListNode *next; }; //创建一个单链表 ListNode *CreateList(int *a,int n) { ListNode *pHead = NULL; ListNode *pTemp = NULL; int i = 0; for(i = 0; i < n; i++) { //ListNode *pNew = (ListNode *)malloc(sizeof(struct ListNode)); ListNode *pNew = new ListNode(); //创建一个新的节点 pNew->m_Value = a[i]; pNew->next = NULL; if(NULL == pHead) { pHead = pNew; pTemp = pNew; } else { pTemp->next = pNew; pTemp = pTemp->next; } } return pHead; } //链表尾部插入一个节点 void AddTailNode(ListNode **pHead,int key) { // ListNode *pNew = (ListNode *)malloc(sizeof(struct ListNode)); ListNode *pNew = new ListNode(); pNew->m_Value = key; pNew->next = NULL; /*if(NULL == pHead) { return; }*/ if(NULL == *pHead) { *pHead = pNew; return; } ListNode *p = *pHead; ListNode *q = NULL; while(NULL != p) { q = p; p = p->next; } q->next = pNew; } int main(void) { int a[5] = {3,6,8,2,1}; ListNode *p = CreateList(a,5); //ListNode *p = NULL; AddTailNode(&p,4); while(NULL != p) { cout<<p->m_Value; p = p->next; } return 0; }