#include<iostream>
using namespace std;
typedef struct listnode {
int data;
listnode* next;
}lnode,*linklist ;//如果说没有加typedef,那么就是变量,如果加上typedef就是取别名
//LNode,*LinkList均为LNode的别名,
//前插法
void createlist_h(linklist&l,int n)
{
l = new lnode;//先将头节点开辟空间,
l->next = NULL;//将头节点空
for (int i = 0; i < n; i++)
{
lnode * p = new lnode();//开辟下一个节点
cin >> p->data;
p->next = l->next;//第一步是将p的下一个节点置为空(就是尾节点),然后第二步往后就是将新节点的下一个值指向老节点
l->next = p;//将头节点指向p
}
}
//尾插法
void createlist_r(linklist &l,int n)
{
l = new lnode;
l->next = NULL;
lnode *r = l;//尾指针指向头指针,记住现在还没有节点
for (int i = 0; i < n; i++)
{
lnode* p = new lnode();
cin >> p->data;
p->next = NULL;//将p的下一个置为空,一直要保证p可能为最后一个节点
r->next = p;//不能调用头指针,调用尾指针
r = p;
}
}
void out_list(lnode *L)//输出链表
{
lnode* p1 = L;
while (p1)
{
cout << p1->data<<" ";
p1 = p1->next;
}
}
int main()
{
linklist L;
// linklist M;
int n =0;
cout << "请输入链表长度" << endl;
cin >> n;
createlist_h(L, n);//头插函数
out_list(L);
//createlist_r(M, m);//尾插函数
system("pause");
return 0;
}