之前链表,栈,队列,树都了解过,但大都用了STL实现,真是手动模拟的话,妥妥的菜鸡。。所以现在从头开始吧!
1.链表的创建和插入
创建比较简单,设置一个头结点,普通结点和一个临时指针,临时指针指向这个普通结点,给普通结点动态申请一个空间,将数据存到data域中,设置后继指针为空,临时指针起到个串联的作用
插入的话,直接修改指针就可以,不过值得注意的是,要先动待插入结点和此结点之后的结点之间的指针
#include<bits/stdc++.h>
using namespace std;
typedef struct node {
int data;
node *next;
} linklist;
int main() {
linklist *head, *p, *end, *t, *h; //头结点,普通结点,尾结点
head = new node; //分配地址
head = end; //空链表 头尾结点一样
int n, a;
cin >> n;
head=NULL;
for (int i = 1; i <= n; i++) {
cin >> a;
p = new node;
p->data = a;
p->next = NULL;
if(head==NULL)
head=p;
else
end->next = p;
end = p; //链表的创建
}
int b;
cin >> b; //读入待插入的数
t = head;
while (t != NULL) { //从链表头部开始遍历
if (t->next == NULL || t->next->data > b) {
h = new node; //动态申请一个空间,用于存放新的结点
h->data = b; //为结点赋值
h->next = t->next;
t->next = h;
break;
}
t = t->next;
}
t = head;
while (t != NULL) {
cout << t->data << " ";
t = t->next;
}
}