C语言通过尾插法建立单链表,并输出链表元素。
#define _CRT_SECURE_NO_WARINING
#include <stdio.h>
#include <stdlib.h>
typedef struct Lnode {
int data;
struct Lnode* next;
}Lnode,*LinkList;
Lnode* CreatLinklist(Lnode *L, int n)
{
Lnode* Pnew = NULL, (*Ptail) = NULL;//建立新的结点和尾指针
L = (LinkList)malloc(sizeof(Lnode));//建立一个头结点
L->next = NULL;
Ptail = L;//使尾指针指向头节点
int data;
for (int i = 0; i < n; i++)
{
Pnew = (LinkList)malloc(sizeof(Lnode));//生成新结点
scanf_s("%d", &data);
Pnew->data = data;
Ptail->next = Pnew;//使新结点接到尾结点后
Ptail = Pnew;//使尾指针移动到新结点
}
Pnew->next = NULL;//使新结点的next为空
return L;
}
void print(Lnode* L)
{
Lnode* p = L->next;
if (p == NULL) {//判断链表是否为空
printf("The Link is null");
return;
}
while (p != NULL)
{
printf("%d ", p->data);
p = p->next;
}
}
int main()
{
Lnode* L1=NULL;
L1=CreatLinklist(L1,3);
print(L1);
return 0;
}