前言
声明:因个人能力有限,本文仅是个人的学习记录笔记,有错误之处还望指出数据结构每日一题
题目
链表的头插法建立链表
要点
- 链表的头插法
- 头节点的建立
- 头节点不能断链
思想
- 先分配内存空间建立一个头节点
- 获取输入的数据,在输入的值为-1的时候终止链表的建立
- 节点赋值,节点指向头节点的下一个位置,然后头节点指向插入的节点(关键)
LinkList linkHead_Insert(LinkList &L){
Lnode *p;
int val;
L = (Lnode *)malloc(sizeof(LNode)); //新建头节点
L->next = NULL;
scanf("%d",val);
while(val != -1){ //数据输入不为-1则一直获取输入建立链表
p = (Lnode *)malloc(sizeof(LNode));
p->data = val; //节点赋值
//关键两步骤
p->next=L->next;
L->next=p;
}
retrun L;
}
题目
链表的尾插法建立链表
要点
- 链表的尾插法
- 头节点的建立
- 尾指针要指向空
思想
- 先分配内存空间建立一个头节点
- 获取输入的数据,在输入的值为-1的时候终止链表的建立
- 用一个节点当作尾节点,用作节点的插入
- 尾节点指向新节点,尾节点等于新节点,同时新的尾节点指向空
LinkList linkRear_Insert(LinkList &L){
Lnode *r;
int val;
L = (Lnode *)malloc(sizeof(LNode)); //新建头节点
r=L;
scanf("%d",val);
while(val != -1){ //数据输入不为-1则一直获取输入建立链表
p = (Lnode *)malloc(sizeof(LNode));
p->data = val; //节点赋值
r->next = p;
r=p;
r->next = NULL; //尾指针指向空
}
retrun L;
}