#include<iostream>
#include<stdlib.h> // malloc函数头文件
using namespace std;
typedef struct LNode
{
int data; // 数据域
LNode* next; // 指针域
}LNode,*LinkList;
void List_TailInsert(LinkList& L, int n) // 初始化线性表 尾插法
{
L = (LinkList)malloc(sizeof(LNode)); // 创建一个头结点
if (L == NULL)
{
exit(0); // 创建失败
}
L->next = NULL; // 头结点之后暂无节点
cout << “请输入表中数据” << endl;
LNode* s;
LNode* r = L; // 尾指针
for (int i = 1; i <= n; i++)
{
s = (LinkList)malloc(sizeof(LNode)); // 创建新节点
scanf_s(“%d”, &(s->data)); // 赋值
r->next = s; // 尾插法
r = s;
}
r->next = NULL; // 尾节点置空
}
void list_HeadInsert(LinkList& L, int n) // 尾插法
{
L = (LinkList)malloc(sizeof(LNode));
if (L == NULL)
{
exit(0); // 创建失败
}
L->next == NULL; // 头结点之后无节点
cout << “请输入表中数据” << endl;
LNode* s;
for (int i = 1; i <= n; i++)
{
s = (LNode*)malloc(sizeof(LNode));
scanf_s(“%d”, &(s->data)); // 输入数据
s->next = L->next;
L->next = s;
}
}
void showList(LinkList& L) // 显示单链表
{
LNode* p = (LinkList)malloc(sizeof(LNode));
p = L->next;
while (p != NULL)
{
cout << p->data << endl;
p = p->next; // 直到最后一个
}
}
int main()
{
LinkList L; // 创建一个单链表
//List_TailInsert(L, 6);
list_HeadInsert(L, 5);
showList(L);
}
实验结果如下:
尾插法结果:
头插法结果: