说明是头插法,就是在链表的头结点后插入一个新的结点,而不是在链表尾部添加新结点。
void inset_head(struct node *pH,struct node *new)
{
new->pNext=pH->pNext;
pH->pNext=new;
pH->data+=1;
}
int main()
{
struct node *pHeader=create_node(0);
inset_head(pHeader,create_node(1));
inset_head(pHeader,create_node(2));
inset_head(pHeader,create_node(3));
}
其中"->"的实际是对结构体的成员访问。如pH->data+=1。真正进行链表链接的是"="。如p->pNext=new。
什么是遍历,遍历不可重复,不可遗漏,高效。从头结点开始,NULL结束。起始于“->”到结尾只有一条路。头指针+头节点为开始,一次得到数据,结束并返回。
方法1:
void traversal(struct node *pH)
{
struct node *p=pH->pNext; 跳过头节点
//pH->data为头节点数据不算遍历点
while(NULL!=p->pNext)
{
printf("node data:%d\n",p->data); 只能打印到结点数-1,因为NULL结点指向NULL
p=p->pNext;
}
printf("node data:%d\n",p->data); 补充打印lost结点
}
方法2:
void traversal(struct node *pH)
{
struct node *p=pH; 先不跳过头节点
while(NULL!=p->pNext)
{
p=p->pNext; 跳过头节点
printf("node data:%d\n",p->data);
}
}