第一范文网 - 专业文章范例文档资料分享平台

数据结构知识点总结

来源:用户分享 时间:2025/10/2 18:57:29 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

p -> next ? q;

q ? p;

}

return ( p );

}

有一个单链表(不同结点的数据域值可能相同),其头指针为head,编写

一个函数计算数据域为x的结点个数。链表节点结构定义如下:

data next 解:遍历该链表的每个结点,每遇到一个结点,判断其值是否为x,是的话就计数。结点个数存储在变量n中。算法如下:

int Counter(head, x) {

int n = 0; p <= head; while ( p != NULL ) {

if (p->data = x )

n <= n + 1;

p <= p -> next; } return ( n ); }

-------------------------------------------------------------------------------

栈和队列

栈:限定仅在表尾进行插入或删除

栈:是限定仅在表尾进行插入或删除操作的线性表 表尾(栈顶) 表头(栈底)

假设栈S=(a1,a2,…,an),则称a1为栈底元素,an为栈顶元素。栈中元素按a1,a2,…,an的次序进栈,退栈的第一元素应为栈顶元素。换句话说,栈的修改是按后进先出的原则进行的。因此,栈又称为后进后出的线性表。

压栈算法:int PushStack(s[],top,x) {

if(top>=SMAX) {

printf(\return 0;

} else { } }

出栈算法:

ElemType Popstack(s[],top,bottom) {

if(top<=bottom) { } } else {

top<=top-1; y<=S[top]; return y; return 0;

printf(\S[top]<=x; top=top++;

}

作业2:为了节省空间,两个栈共享一段内存,写出这两个栈的压栈及出栈算法。

为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续地内存空间时,应将两栈的栈底,分别设在这片内存空间的两端,这样,当两个栈的栈顶在栈空间的某一位置相遇时,才会产生上溢。

两个栈共享空间的条件:两栈顶指针值相减的绝对值为1(两栈顶指针相邻) 数组Q[0..n-1]作为一个环形队列,f为当前队头元素的前一位置,r 为队尾元素的位置,假定队列中元素的个数总小于 n,计算队列中元素个数的公式是 (n+r-f) mod

队列特点:先进先出,队头出,队尾进,当队尾大于队头时,说明进的比出的多,此时元素个数为Rear – Front

循环队列用数组A[0..m-1]存放其元素值,已知其头尾指针分别是front和rear,则当前队列中的元素个数是(rear-front+m) MOD m

循环队列两指针front指示队列头元素位置rear指示队列尾元素位置 初始化建空队列时,令front=rear=0,插入新的尾元素->尾指针+1;删除队列头元素->头指针+1 头指针始终指向队列头元素

搜索更多关于: 数据结构知识点总结 的文档
数据结构知识点总结.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c3u1jt2q7vn0fluh9boav3qhtz4wh9l00tvr_5.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top