函数名有点丑陋,将就着看看
#include<iostream>
using namespace std;
typedef struct node
{
int num;
struct node* next;
}node; //定义结构体
void shuzu(int a[], int elenum);
void lianbiao(node* head);
void createlb(node* head, int a[], int elenum);
int main()
{
int elenum;
int a[1001];
node* head;
head = (node*)malloc(sizeof(node));
head->next = NULL; //初始化,head意为头节点
cin >> elenum;
for (int i = 0; i < elenum; i++)
cin >> a[i]; //输入数据存在数组里
shuzu(a, elenum);
createlb(head, a, elenum);
lianbiao(head);
}
void shuzu(int a[], int elenum) //数组实现,这个简单滴
{
int b[1001];
for (int i = 0; i < elenum; i++)
{
b[i] = a[elenum - i - 1];
cout << b[i]<<" ";
}
cout << endl;
}
void createlb(node* head, int a[], int elenum)//创建链表
{ //直接使用头插法,就不需invert,本身就是逆序
node* s;
for (int i = 0; i < elenum; i++)
{
s= (node*)malloc(sizeof(node)); //新创建节点s
s->num = a[i];
s->next = head->next;
head->next = s;
}
}
void lianbiao(node* head) //输出的函数
{
node* q = head->next;
while (q)
{
cout << q -> num<<" ";
q = q->next; //这一句不能少
}
}