菜鸟提问 有关数据结构建立单链表
我的意思是建立一个单链表,输入5个数字,然后打印,但是对链表的指针存在问题,谢谢......
#include <stdio.h>
#include <malloc.h>
typedef struct node{
int data;
struct node *next;
}num;
void main()
{
num *l,*p,*j;
int i;
l=(num *)malloc(sizeof(num));
l-> next=NULL;
j=l;
for(i=0;i <5;i++){
p=(num *)malloc(sizeof(num));
scanf( "%d ",p-> data);
j-> next=p;
p-> next=NULL;
j=j-> next;
}
l=l-> next;
for(i=0;i <5;i++)
printf( "%d ",l1-> data);
}
[解决办法]
#include <stdio.h>
#include <malloc.h>
#include <memory.h>
typedef struct node{
int data;
struct node *next;
}Num , *PNum;
int main(int argc, char* argv[])
{
PNum pHead , pCur , pTmp;
pHead = pCur = pTmp = NULL ;
// 建立链表
printf( "输入节点信息:\n " );
for( int i = 0 ; i < 5 ; i++ )
{
pTmp = (PNum)malloc(sizeof (Num)) ;
memset( pTmp , 0x00 , sizeof (Num) );
scanf( "%d ",&pTmp-> data);
if( pHead != NULL )
{
pCur-> next = pTmp ;
pCur = pTmp ;
}else
{
pHead = pCur = pTmp ;
}
}
// 打印链表
pTmp = pHead ;
printf( "\n输出节点信息:\n " );
while( pTmp )
{
printf( "%d\n " , pTmp-> data );
pTmp = pTmp-> next ;
}
while( pHead )
{
pTmp = pHead ;
printf( "\n释放内存节点 : %d\n " , pTmp-> data );
pHead = pHead-> next ;
free( pTmp );
pTmp = NULL ;
}
return 0;
}