非循环单链表
不理解头节点为什么能指向首节点,并没有给头结点赋值呀,只创建了
typedef struct Node{
int data; //数据域
struct Node * pNext; //指针域
}NODE,*PNODE;
PNODE creatList(void){
int len;
int val;
//创建头结点
PNODE pHead=(PNODE)malloc(sizeof(NODE));
if(NULL==pHead){
printf("链表头结点创建失败,系统退出.\n");
exit(-1);
}
PNODE pTail=pHead;
pTail->pNext=NULL;
printf("请输入链表元素个数:len=");
scanf("%d",&len);
//创建结点
for(int i=0;i<len;i++){
printf("请输入第%d个节点的值:",i+1);
scanf("%d",&val);
PNODE pNew=(PNODE)malloc(sizeof(NODE));
if(NULL==pNew){
printf("链表结点创建失败,系统退出.\n");
exit(-1);
}
pNew->data=val;
pTail->pNext=pNew;
pNew->pNext=NULL;
pTail=pNew;
}
printf("%d\n",pHead->pNext->data);
return pHead;
}
运行没有错误
在网上看看的郝斌ls的数据结构,照着敲的,主要是循环中的插入没懂,还有pHead为什么会有值,想了一个小时没想明白。希望能为我解答,不胜感激。