美文网首页
单链表的创建-尾插法

单链表的创建-尾插法

作者: 写代码不如跳舞 | 来源:发表于2017-08-24 11:49 被阅读0次

单链表的创建-尾插法

#include<iostream>
#include<cstdlib>
using namespace std;

struct LNODE
{
    int val;
    LNODE *pnext;
};

LNODE* initListEnd(int arr[],int n) //尾插法,head:目标链表头结点,arr[]:插入值存放数组,n:数组长度 
{
    
    LNODE *head = (LNODE*)malloc(sizeof(LNODE));
    head->pnext = NULL;
    
    LNODE *tmpNode; //临时结点用来存放当前arr的值
    LNODE *endNode; //始终指向目标链表尾端的节点
    
    endNode = head; //此时目标链表只有头结点 
    
    for(int i = 0 ; i < n ; ++i ) //将arr[]中的值依次依次插入链表尾端 
    {
        tmpNode = (LNODE*)malloc(sizeof(LNODE)); //为新结点申请空间 
        tmpNode->val = arr[i]; //新结点赋值 
                
        endNode->pnext = tmpNode; //目标链表尾指向新结点
        
        endNode = endNode->pnext; //更新endNode使其指向目标结点尾端 
    }
    endNode->pnext = NULL; 
    return head;
}

int main()
{
    int n = 10;
    int arr[n]={1,2,3,4,5,6,7,8,9,0};
    LNODE *head;
    
    head = initListEnd(arr,n);
    
    LNODE *tNode = head->pnext; //创建临时结点tNode依次输出链表各结点的值 
    
    while(tNode->pnext != NULL)
    {
        cout<<tNode->val<<" "<<endl;
        tNode = tNode->pnext;
    }
    cout<<tNode->val<<endl; //最后一个结点pnext已经为NULL了,所以循环中没有输出它,需要单独输出 
    return 0;
}

相关文章

网友评论

      本文标题:单链表的创建-尾插法

      本文链接:https://www.haomeiwen.com/subject/uvosdxtx.html