大家好,也是跑来更数据结构了好吧。
1.认识单向循环链表
struct node{
int data;
node* next;
};
怎么样?是不是非常眼熟?
没错,这就是单链表的结构体。(浪费表情)
但是它是这么初始化的:
node* head = new node;
head -> next = head;
而不是
node* head = new node;
head -> next = NULL;
2.1.1 插入
插入非常简单,只需要两行代码就行了(手残党狂喜)
第一行:
p -> next = head -> next
head -> 1 -> 2 -> 3 -> head
p ┘
第二行:
head -> next = p -> next
head -> p -> 1 -> 2 -> 3 -> head
2.1.2 删除
删除也非常简单,只需要两行代码就行了(手残党又狂喜)
第一行:
head -> next = p -> next
head -> 1 -> 2 -> 3 -> head
p ┘
第二行:
delete p;
head -> 1 -> 2 -> 3 -> head
2.1.3 读取
读取有点难,需要用到循环,
还要再建一个点位。
int p;
cin >> p;
node *elem = head;
int j = 0;
while(j < p){
elem = elem -> next;
j++;
}
(此时的elem就是读取的数据)