#include <iostream>
#include <algorithm>
using namespace std;
//类型声明。
struct LNode{
int data;
LNode *next;
};
typedef LNode *LinkList;
//初始化,构造空的只含头结点的单链表。
void initList(LinkList &L)
{
L=new LNode;
L->next=NULL;
}
//找尾结点
LNode *getTail(LinkList L)
{
LNode *r;
r=L;
while(r->next!=NULL)
{
r=r->next;
}
return r;
}
int main()
{
LinkList L;
initList(L);
int n;
cin>>n;
LNode *tail = getTail(L);
while(n--)
{
LNode *newNode = new LNode;
cin >> newNode->data;
newNode->next = NULL;
tail->next = newNode;
tail = tail->next;
}
cout<<tail->data;
return 0;
}
注意问题:
- 在初始化链表时,
initList
函数的参数应使用引用传递,以便在函数内部修改实参。 - 在获取尾结点时,应将其声明为
LNode*
类型。 - 在循环添加新节点时,应先创建新节点,然后将新节点链接到链表的尾部,并更新尾结点。
- 注意输入的数据是否与链表节点的数据类型匹配。
- 输出尾结点数据时,不需要解引用
r->data,即不需要*r->data
。