#include<stdio.h>
#include<stdlib.h>
//数据结构定义
typedef struct LNode
{
int data;
LNode * next;
}LNode,*LinkList;
//头插法
void create(LinkList &L,int a[],int n)
{
int i = 0;
LinkList s;
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
for(i = 0 ; i<n; i++)
{
s=(LinkList)malloc(sizeof(LNode));
s->data = a[i];
s->next = L->next;
L->next = s;
}
}
//输出
void print(LinkList L)
{
LinkList p;
p = L->next;
while(p)
{
printf("%dt",p->data);
p= p->next;
}
}
void main()
{
LinkList L;
int a[] = {1,2,3,4,5,6,7,8,9,0};
create(L,a,10);
print(L);
}
补充递归逆向输出单链表:(先输出后面的接点,再输出当前结点。)
void printRecursivly(LinkList L)
{
if(L)
{
if(L->next)
{
printRecursive(L->next);
}
cout<< L->data<<"\t";
}
}
以上代码虽简洁,但是在链表非常长的时候,可能会导致函数调用的层级太深,从而有可能导致函数调用栈溢出,显式用栈相对会好点。