根据用户输入的元素,按照头插的方式插入一个带头结点的链表,最后输出这个链表的内容;
注意:头插法创建时数据读入顺序与线性表中的逻辑顺序正好相反。即线性表(12,16,6,22),要想在链表中也维持这种顺序,则输入的顺序是22,6 16,12.
参考代码附上:
//单链表的基本操作
//创建并打印单链表
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int data;
struct node *next;
}LNode,*LinkList;
//头插创建
LinkList CreatList(int n)
{
LinkList H=(LinkList)malloc(sizeof(LNode));
H->next=NULL;
LNode* s;
int x;
printf("请输入n个元素:");
for(int i=0;i<n;i++){
s=(LinkList)malloc(sizeof(LNode));
scanf("%d",&x);
s->data=x;
s->next=H->next;
H->next=s;
}
return H;
}
void PrintList(LinkList N)
{
if(N==NULL)
return;
printf("%d ",N->data);
PrintList(N->next);
}
int main()
{
int n;
printf("请输入要创建的元素个数:\n");
scanf("%d",&n);
LinkList list=CreatList(n);
printf("输出结果:");
PrintList(list->next);
return 0;
}
***注意***
PrintList函数是从单链表的第二个结点开始的,这是因为此链表是带头节点的,头结点不存储据。如果不这样,就会出现如下情况:
把没用的头结点也打印出来了!