问题描述
- 新手想问一下链表的问题
-
struct Node create_list()
{
int value;
int i;
int len;
struct Node *pHead=(struct Node)malloc(sizeof(struct Node));
struct Node pTail=(struct Node)malloc(sizeof(struct Node));
pTail=pHead; ////////////////////////////////// /////////////// 将头指针赋给了尾指针
printf("请输链表入节点的长度:");
scanf("%d",&len);
for(i=0;i
{
struct Node *pNew=(struct Node*)malloc(sizeof(struct Node));
printf("请输入第%d个节点的数据:",i+1);
scanf("%d",&value);
pNew->a=value;
pTail->pNext=pNew;/////////////现在是尾节点-》新节点
pNew->pNext=NULL;///////////////////////////////////现在把新节点的指针域变为零,便于赋给尾节点(尾节点的指针域为空)
pTail=pNew;/////////////////////////////////////////将
}
return pHead;
}pTail->pNext=pNew;
pNew->pNext=NULL;
pTail=pNew;
这三条代码什么意思呢?能否帮忙注释一下第三条的含义呢?拜托了
解决方案
看了,你书本里链表的内容你都没有理解啊。
pTail->pNext=pNew,表示a的下一个是b,也就是a的下一个和b关联。
pNew->pNext=NULL;表示b的下一个还是未知,先赋值null
pTail=pNew; pTail一直指向最后一个节点,现在最后一个节点是b
解决方案二:
struct Node *pHead=(struct Node)malloc(sizeof(struct Node));
struct Node pTail=(struct Node)malloc(sizeof(struct Node));
为头节点和尾节点分配内存。
解决方案三:
链表里有两种插入结点算法,一种是头插法,一种是尾插法
尾插法是将新增节点插在链表尾部,
for(t = Head; t->next; t=t->next); //结束时t指向尾节点
p->next = NULL; //进行插入
t->next = p;
http://blog.csdn.net/behanga/article/details/6701495
可以仔细看一看
解决方案四:
这是将新的节点插入到链表的尾部,然后将链表尾指针指向新的尾节点,并确保尾节点的next指针指向NULL
解决方案五:
尾插法建立链表。
不知道你学没学过链表的插入,就相当于每次插入都是在尾部。
pTail->pNext=pNew; 现在的尾指针的next指向新的节点
pNew->pNext=NULL;新节点没有下一个节点,所以next是NULL
pTail=pNew;尾指针指向新节点