1.内容小结:
线性表依据内存空间是否连续分为顺序表和链式表,通常用数组和链表分别表示其具有的存储结构。
数组的特点:
- 在内存中,地址连续;
- 能实现随机访问
- 插入和删除操作效率低,查找操作效率高(具体问题具体分析)
- 数组使用前必须声明所占内存的大小
链表的特点:
- 在内存中,地址不连续
- 只能顺序访问
- 插入和删除操作效率高,查找操作效率第(具体问题具体分析)
- 动态地分配存储空间,内存利用率高
本章的学习重点还是在链表这一比较陌生的概念上,首先是了解链表常见的几种分类:
转载于:https://www.cnblogs.com/FengZeng666/p/9425117.html
截止所学,比较常用的还是单链表,做题的时候经常用的一些操作如下
1 void InitList(LinkList &a)
2 {
3 a = new LNode;
4 a -> next = NULL;
5 }
6
7 void CreateList(LinkList &a, int n)
8 {
9 LNode *p = a;
10 int num;
11 for(int i = 0; i < n; i++)
12 {
13 cin >> num;
14 p -> next = new LNode;
15 p = p -> next;
16 p -> data = num;
17 p -> next = NULL;
18 }
19 }
20
21 void InsertList(LinkList &a, int n, int x){
22 LNode *p = a;
23 if(p -> next == NULL){
24 LNode *q = new LNode;
25 q -> data = x;
26 q -> next = NULL;
27 p -> next = q;
28 p = q;
29 return ;
30 }
31 while(p -> next != NULL){
32 LNode *temp = p;
33 p = p -> next;
34 if(p -> data == x) return;
35 if(p -> data > x){
36 LNode *q = new LNode;
37 q -> data = x;
38 q -> next = p;
39 temp -> next = q;
40 return;
41 }
42
43 }
44
45 LNode *q = new LNode;
46 q -> data = x;
47 q -> next = NULL;
48 p -> next = q;
49 p = q;
50 return ;
51
52 }
53
54 void OutputList(LinkList a){
55 LNode *p = a -> next;
56 while(p != NULL){
57 cout <<p->data;
58 if(p -> next != NULL)
59 cout <<" ";
60 p = p->next;
61 }
62 }
63
64 void DestroyList(LinkList a){
65 LNode *p = a, *q;
66 while(p != NULL){
67 q = p -> next;
68 delete(p);
69 p = q;
70 }
71 }
这一章的内容不多,但却非常有难度,希望随着学习的深入,对链表的操作能渐渐地得心应手吧。
2.心得体会
虽然说只是平时的练习,却也常常是跟时间赛跑才能完成,无论是pta的练习还是组内讨论的问题,都要求对题目有明晰的理解,不然就会经常绕圈子甚至不知所措,希望能一直保持一股学习的劲儿吧!
3.资料分享
推荐mooc上陈越姥姥的数据结构课程,也就是老师给我们看的那个。
4.后续目标
要继续努力,学好下一章。