数据结构第2章学习小结
- 你对本章内容的小结
- 完成作业或实践时解决困难的经验分享
- 这段时间,你参考了哪些值得向大家分享的资料?每一项推荐都请说明推荐理由及列出相关链接(或书目名称,具体页码)
- 目前学习过程中存在的困难,待解决或待改进的问题
- 上次博客确定的目标达到了吗?如果没达到,请分析原因
- 接下来的目标
1.线性表小结:
(一)顺序表
( 1 )初始化:为顺序表L动态分配一个预定义大小的数组空间,使elem指向这段空间的基地址,将当前长度设为0
L.elem = new int [maxsize];
if ( ! L.elem) 退出,申请失败;
L.length = 0;
退出,申请成功;
( 2 ) 取值: 按下标取值即可
( 3 ) 查找 :先判断指定的位置序号i是否合理,合理则一个for循环遍历
( 4 )插入 :第一,判断指定的位置序号 i 是否合理;
第二,判断顺序表的储存空间是否已满;
第三,将最后一个至第i个元素依次向后移动一个位置;
第四,插入;第五,表的长度+1
( 5 )删除:第一,判断指定的位置序号 i 是否合理;
第二,将第 i + 1 个至最后一个元素依次向前移动一个位置;
第三,表的长度-1
(二) 链式表
( 1 )初始化:新生成节点作为头节点,头指针L指向头节点,头节点的指针域为空
L = new Lnode;
L -> next = NULL;
( 2 ) 取值 :顺藤摸瓜地找
P = L -> next ;
找到则赋值e=P->data;
设置一个计数器j,退出循环时如果指针P为空或者计数器 j 大于 i (i为要找的节点序号),说明搜索失败
( 3 ) 查找: 顺藤摸瓜地找,找到则返回p此时的地址值,没找到则返回NULL
( 4 )插入:第一,找到该节点的前一个节点ai-1,并用指针p指向该节点;
第二,生成新节点;
第三,新节点数据域置为e;
第四,新节点指针域指向ai,
第五,节点p的指针域指向新节点
代码: ListInsert(单链表L , 第i个节点 , 插入的数据e(放在第i-1和第i个节点之间))
{
int *p = L ;int j = 0;
while(p && ( j < i - 1) )
{p=p->next;++j;}
if( !p || j > i - 1) return 错误;
s = new Lnode;//新建节点
s -> data = e;//数据域置为e
s ->next = p -> next; //新节点指针域指向ai
p -> next = s;
return 成功;
}
( 5 )删除:一:找到ai-1; 二:找到ai+1, 三:ai-1节点的指针域指向ai+1 四:释放ai空间
2.完成作业或实践时解决困难的经验分享
看书+百度
3.这段时间,你参考了哪些值得向大家分享的资料?每一项推荐都请说明推荐理由及列出相关链接(或书目名称,具体页码)
只参考了课本
4.目前学习过程中存在的困难,待解决或待改进的问题
string a;(写在函数以外)
char b[1000];(写在函数以外)
getline(cin,a);
cin.getline(b,1000);
输入相同的数据,a和b的内容有何不同?
5.上次博客确定的目标达到了吗?如果没达到,请分析原因
上次博客没有确定目标(该博客为第一篇)
6.接下来的目标
A完天梯T1的题