
#include
#include
typedef struct Node
{
int Data;
struct Node *Next;
}Node, *LinkList;
void CreatFromHead(LinkList L, int n) //头插法创造n个节点的链表
{
LinkList p;
int i;
L=(LinkList)malloc(sizeof(Node));
L->Next =NULL; //创造一个头结点
for (i=1;i<=n;i++)
{
p=(LinkList)malloc(sizeof(Node));
scanf("%d",&p->Data);
p->Next = L->Next ;
L->Next = p;
}
}
void TraverseLinkList(LinkList L)
{
LinkList p;
p=L->Next ;
while(p!=NULL)
{
printf("%d " , p->Data );
p=p->Next ;
}
}
void main()
{
LinkList L=NULL;
CreatFromHead(L, 2);
TraverseLinkList(L);
}
运行时出错,个人推断是链表的创建函数有错误,错在哪里啊?求解答……
你是想 先建立数据链表,然后遍历链汪基表吧
然而你的程序得到的却是 倒叙输出了吧,问题出在你的链表建立时候出现的问题
首先你申请L为头结点,然后依次申请内存p是 一直插入到了头结点L的后面,而不是在新的结点之后 你可以在
L->next=p;的后面加上语句L=p这个语句,这样就使新的结点p的名称变成了L,然后依次执行在L后面的插入语句。。。
认真在看看吧。困空谨。。希亏拦望帮得到你
楼主你好
的确是在创建函数中出现了错误
一下是修改好的代码:
#include
#include
typedef struct Node
{
int Data;
struct Node *Next;
}Node, *LinkList;
void CreatFromHead(LinkList &L, int n)//改为L的引用型指盯册旦针 否则实参L头指针不能被改变
{ //楼主要好好理解一下 引用性指针的概念
LinkList p;
int i;
L=(LinkList)malloc(sizeof(Node));
L->Next =NULL;
for (i=1;i<=n;i++)
{
p=(LinkList)malloc(sizeof(Node));
scanf("%d"姿扒,&p->Data);
p->Next = L->Next ;
L->Next = p;
}
}
void TraverseLinkList(LinkList L)
{
LinkList p;
p=L->Next ;
while(p!=NULL)
{
printf("%d " , p->Data );
p=p->Next ;
}
}
void main()
{
LinkList L=NULL;
CreatFromHead(L, 2);
TraverseLinkList(L);
}
希望能帮凯扰助你哈