链表只存进数组的最后一个元素

求解为什么链表里只存进了数组的最后一个元素


#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
struct Node   
{
        int data;   
        Node* link;
        Node() { link = NULL; }
        Node(int e, Node* next = NULL)
        {
            data = e;
            link = next;
        }
};


class LinkList     
{
private:
        Node* head;              
public:
        LinkList();    
        LinkList(int data[], int  size);           
        void Output() const;    
};  
LinkList::LinkList() {
        head = new Node;
}
LinkList::LinkList(int data[], int  size) {
        Node* p, * r;
        head = p = new Node;
        for (int i = 0; i < size; ++i) {
               r = new Node(data[i]);
               p->link = r;
        }
}
void LinkList::Output() const{
    Node* current = head->link;
    while (current)
        {
        cout << current->data << "  ";
        current = current->link;
     }
    std::cout << std::endl;
}
const int N=10;
int main()
{
    srand(time(0));
    int data[N];
    for (int i = 0; i < N; i++){
        data[i] = rand() % 100;
    }
    for (int i = 0; i < N; ++i) {
        cout << data[i] << ' ';
    }
    cout <<endl;
    LinkList L(data, N);
    L.Output();
    return 0;
}

运行结果:

img


LinkList::LinkList(int data[], int  size) {
        Node* tmp;
        
        for (int i = 1; i < size; ++i) 
        {
            if(!head)
            {
                head = new Node(data[i]);
                tmp = head;
            }
            else
            {
                tmp->link = new Node(data[i]);
                tmp = tmp->link; 
            }   
                
        }
}

这个函数得这么写,供你参考,望采纳。