采用头插入法实现单链表的创建
//尾插入法创建单链表出现:全部输出后程序报错无法继续执行的问题
代码如下:
#include<stdio.h>
#include<stdlib.h>
typedef int elemtype;
typedef struct node {
elemtype data;
struct node* next;
}LinkList,LNode;
//头插法创建链表
LinkList* CreateList(int n)
{
int i;
LinkList* L,*p;
L = (LNode*)malloc(sizeof(LNode));
L->next = NULL;//L为头结点
for (i = n; i >= 1; i--)
{
p = (LNode*)malloc(sizeof(LNode));
printf("请输入第%d个元素:\n", i);
scanf_s("%d", &p->data);
p->next = L->next;
L->next = p;
}
return L;
}
尾插法创建单链表
//LinkList* CreateList2(int n)
//{
// int i;
// LinkList* L,*r,*p;
// L = (LNode*)malloc(sizeof(LNode));
// r= (LNode*)malloc(sizeof(LNode));
// r = L;
// for (i = 0; i < n; i++)
// {
// p = (LNode*)malloc(sizeof(LNode));
// printf("请输入第%d个元素",i+1);
// scanf_s("%d", &p->data);
// r->next = p;
// r = p;
// }
// return L;
//}
LinkList* PrintList(LNode*L)
{
LinkList* s;
s = (LNode*)malloc(sizeof(LNode));
s = L->next;
printf("现输出单链表中的元素:\n");
while (s!=NULL)
{
printf("%d ", s->data);
s = s->next;
}
return L;
}
int main()
{
int num;
LinkList* first;
/*LinkList*first2;*/
printf("请输入单链表存储的个数:\n");
scanf_s("%d", &num);
first = CreateList(num);
/*first2 = CreateList2(num);*/
PrintList(first);
/*PrintList(first2);*/
return 0;
}
代码运行结果: