C++实现链表的创建

来源:互联网 发布:皮尔斯数据 编辑:程序博客网 时间:2024/06/05 17:45

自己保存一下,建立链表的程序,省的以后每次建立链表的时候,还需要重新在写。

这里要注意一点,在void CreateList(ListNode* &pHead)的时候,用的是指针引用,因为在main中head并没有开辟空间,如果在CreateList中为pHead开辟空间的时候,main中的head依旧还是指向NULL的。

如果在main中为head开辟了空间的话,就不需要用指针的引用了。道理很简单,就和你传int参数是一个道理。createList中的pHead是形参,也就是说pHead的地址和main中head的地址是不一样的,如果在main中为head开辟了空间的话,那么pHead和head所保存的地址是一样的。后面就用了第二种方法实现。

void CreateList(node* &L, int *Number,int length){L = new node;L->elem = Number[0];L->next = NULL;node *p=L;for (int i = 1; i < length; i++){node *newNode = (node *)malloc(sizeof(node));newNode->elem = Number[i];newNode->next = NULL;p->next = newNode;p = newNode;}}

int _tmain(int argc, _TCHAR* argv[]){int A[6] = { 5, 10, 20, 15, 25, 30 };int B[4] = { 5, 15, 35, 25 }; node *LA = NULL;node *LB=NULL;CreateList(LA, A, 6);


void createList1(ListNode* pHead){    ListNode* p = pHead;    for(int i=1; i<10; i++)    {        ListNode* pNewNode = new ListNode;        pNewNode->m_key = i;        pNewNode->next = NULL;        p->next = pNewNode;        p = pNewNode;    }}void destoryList(ListNode* pHead){    assert(pHead!=NULL);    ListNode* pNext = pHead->next;    while(pNext != NULL)    {        delete pHead;        pHead = pNext;        pNext = pHead->next;    }    delete pHead;    pHead = NULL;    return;}int main(){    ListNode* head = NULL;    //createList(head);    head = new ListNode;    head->m_key =0;    head->next = NULL;    createList1(head);    destoryList(head);}

两个方法效果一样。
0 0
原创粉丝点击