请教一个问题,写了一个简单的单链表 但是头插入第一个数据总是不是总是不输出
#include <stdio.h>#include <stdlib.h>
typedef struct Node
{
int data;
struct Node *next;
}Node,*LinkList;
void ShowList(LinkList L)
{
LinkList p = L->next;
int i = 0;
while( p->next != NULL)
{
i++;
printf("%d>:%d ",i,p->data);
if( i % 5 == 0)
putchar('\n');
p = p->next;
}
}
void CreateListHead(LinkList *L,int n)
{
LinkList p;
int i;
int e;
*L = (LinkList)malloc(sizeof(Node));
(*L)->next = NULL;
for( i = 0;i < n;i++)
{
printf("输入:");
scanf("%d",&e);
p = (LinkList)malloc(sizeof(Node));
p->data = e;
p->next = (*L)->next;
(*L)->next = p;
ShowList(*L);
printf("------------\n");
}
}
int main(void)
{
LinkList L;
LinkList M;
CreateListHead(&L,20);
ShowList(L);
printf("=============\n");
return 0;
}
很简单,把while( p->next != NULL)
{
i++;
printf("%d>:%d ",i,p->data);
if( i % 5 == 0)
putchar('\n');
p = p->next;
}的while( p->next != NULL)改成
while( p != NULL) #include <stdio.h>
#include <stdlib.h>
typedef struct Node
{
int data;
struct Node *next;
}Node,*LinkList;
void ShowList(LinkList L)
{
LinkList p = L->next;
int i = 0;
while( p->next != NULL)
{
i++;
printf("%d>:%d ",i,p->data);
if( i % 5 == 0)
putchar('\n');
p = p->next;
}
}
void CreateListHead(LinkList *L,int n)
{
LinkList p;
int i;
int e;
(*L) = (LinkList)malloc(sizeof(Node));
(*L)->next = NULL;
for( i = 0;i < n;i++)
{
printf("输入:");
scanf("%d",&e);
p = (LinkList)malloc(sizeof(Node));
if(NULL == p)
{
printf("内存溢出!\n");
exit(1);
}
p->next = NULL;
p->data = e;
p->next = (*L)->next;
(*L)->next = p;
//ShowList(*L);
//printf("------------\n");
}
}
int main(void)
{
LinkList L;
LinkList M;
CreateListHead(&L,2);
ShowList(L);
printf("\n=============\n");
return 0;
}
代码仅供参考 楼上没错、、、、 来混鱼币咯。。。。 a1c2c3 发表于 2013-4-17 08:34 static/image/common/back.gif
来混鱼币咯。。。。
同道中人,单链表多看看书就好! 我只是路过打酱油的。 下载下来研究研究
页:
[1]