①typedef关键字.
typedef oldName newName;
//表示将newName定义成oldname的原因意义
//传统的定义结构体时,我们需要
struct stu stu1;
//但是如果我们给struct stu定义一个别名STU时,就会简单很多
STU stu1
//于是就
typedef struct stu{} STU;
STU就变成了一个已经定义好的结构体类型
②链表定义
typedef struct ListNode{
int val;
ListNode* next;
ListNode():val(0),next(NULL){}
ListNode(int x):val(x),next(NULL){}
}LS;
//这是一个简易的链表定义
③典型链表插入定义
void insert(LS *head, int front, int second){
LS* cur = head;
while(cur != NULL){
if(cur->val == front){ //如果找到了需要插入的前节点
LS* tmp = cur->next; //先将后节点指针储存到tmp中
cur->next = new LS(second); //再将tar放在前节点的next指针里面
cur = cur->next; //切换到tar存在的该节点中,在将tmp指针储存在该节点
cur->next = tmp;
return;
}
cur = cur ->next;
}
return;
}
④典型链表删除写法
void delete1(LS *head, int num){
LS* fahead = new LS(0); //因为可能也要删除头节点,所以在头节点前面放一个节点
fahead->next = head;
LS* cur = fahead;
while( cur != NULL){ //遍历所有节点,找到下一个节点的value是目标值的节点
if(cur->next->val == num){
LS* tmp = cur->next; //将当前节点的下一个节点(目标节点)储存在tmp里面
cur->next = tmp->next; //将tmp后面的那个节点指针存在当前节点的next里
return;
}
cur = cur->next;
}
return;
}
⑤链表的遍历输出
LS *cur = head;
while(cur != NULL){
std::cout << cur->val << " " ;
cur = cur->next;
}