数据结构第三章学习心得

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构第三章学习⼼得
第三章的开始学习了栈
栈有他的基本性质,⼜名堆栈,它是⼀种运算受限的线性表。

限定仅在表尾进⾏插⼊和删除操作的线性表。

这⼀端被称为栈顶,相对地,把另⼀端称为栈底。

向⼀个栈插⼊新元素⼜称作进栈、⼊栈或压栈,它是把新元素放到栈顶元素的上⾯,使之成为新的栈顶元素;从⼀个栈删除元素⼜称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

栈可以⽤来在函数调⽤的时候存储断点,做递归时要⽤到栈
const int MAXSIZE = 100;
typedef struct
{
char data[MAXSIZE];
int top;
int stackSize;
}SqStack;
void initStack(SqStack& s)
{
s.top = 0;
s.stackSize = MAXSIZE;
}//顺序栈
在学习链表开始,我就将所有学习过的数据结构类型定义都保存了下来,⽅便复习和深⼊理解。

接下来学习了汉诺塔问题,以汉诺塔问题为媒介,学习了递归和迭代的思维。

但在解决问题时,我们有学习找规律去解决汉诺塔问题⽽不是⼀味的递归(在数据较⼤时难以通过递归快速解决问题)。

接下来学习了队列。

队列是⼀种特殊的线性表,特殊之处在于它只允许在表的前端(front)进⾏删除操作,⽽在表的后端(rear)进⾏插⼊操作,和栈⼀样,队列是⼀种操作受限制的线性表。

进⾏插⼊操作的端称为队尾,进⾏删除操作的端称为队头。

typedef int QElemType;
typedef int Status;
typedef struct QNode
{
QElemType data;
struct QNode* next;
}QNode, * QueuePtr;
typedef struct
{
QueuePtr front;
QueuePtr rear;
}LinkQueue;
Status InitQueue(LinkQueue& Q)
{
Q.front = Q.rear = new QNode;
Q.front->next = NULL;
return1;
}//队列
队列⼤部分内容都是⾃学,⽬前我对队列理解还不够深刻,运⽤起来也不算流畅。

还需要继续练习。

到了⼩组作业的环节,我们组⼀开始在采⽤什么数据结构上考虑了很久。

最后采⽤了链表,代码⽅⾯问题不⼤,主要是时间的减少,通过直接遍历的⽅法解决了。

作业和实践:作业⼀开始⽐较难以下⼿,看完了⽼师在mooc上的视频后写了出来然后复现了⼀遍,感觉有点恍然⼤悟。

实践⼀设计了思路,但是感觉差临门⼀脚,就在⽹上查询资料的帮助下解决了。

⽬标:希望以后在课上的问答环节能够争取完成每⼀个问题,⽬前经常出现答错或者没有思路的问题。

相关文档
最新文档