一个看不懂的c语言数据结构,一个看不懂的c语言数据结构怎么办

本文目录一览:

C语言数据结构问题,刚学就不懂了

while(p!=NULL)

{p=p-link;++i; //这里有问题,还没有访问数据就直接将指针移到后面节点了;

sum=sum+p-data;} //这个应该写到上面,另外因为上面的原因可能会导致内存非法操作,如你操作到p指向c的时候,p此时不为NULL,但当你执行p=p-link;后,p就成为NULL了,再访问p-data就会出错的。

ave=sum/i;

return ave;}

改为:

while(!p)//从Head开始访问,直到链表结束

{

sum += p-data;//累加数据

i += 1;//计数器加1

p = p-link;//指向下一节点

}

if(i!=0)//若链表不为空,返回平均值

return sum/i;

else//若为空链表,返回0,主要是避免除0错误的发生,Good Luck!

return 0;

高手解答 c语言编写数据结构实例 下面的代码看不懂,高手解答

while(i=L.length!compare(*p++,e))

++i;

这个循环就是扫描数组找满足关系的元素的一个过程,循环条件不用解释了吧,一个是循环的边界判断条件,一个是已知的compare()函数,也就是循环的结束条件;

if(i=L.length)

这个if语句的判断条件是i=L.length,表示的是上边的循环式从中间跳出的,也就是找到找到了满足条件的元素,所以返回该元素的位序i,否则表示上面的循环已超出边界并且没有满足条件的元素,所以返回0;

Status(*compare)(ElemType,ElemType))是个函数指针;

数据结构C语言版自学完全看不懂

鄙人是计算机专业的,假期里,在我预习数据结构的时候也是看不懂。不过可以给你点建议:

1、看不懂,只有硬着头皮看,把整本书大致的看一遍,然后回头再看一遍。

2、到开这门课的班级听课,与其老师沟通,了解那些是重点,那些是了解的知识(有些小节是不用看的)。

3、网上有视频的,可以下载 《严蔚敏老师》 的视频。

数据结构确实比较难,是计算机考研科目里仅次于数学的一门,有困难是正常的。

相信你是一个自学能力很强的人,祝你学业有成。

一道C语言数据结构题,程序已给好,看不懂意思,求给分析。。注释。。重赏。。。!

你这个分不太好赚哦…真不好琢磨你哪里不懂,这就关系到注释到哪种程度.能帮你理解多少算多少吧.

为了让你方便看,我们从节点定义和主函数开始.

————————————————

struct slist

{

double s; //用于存储分数的变量

struct slist *next; //指向下一个节点的指针

};

typedef struct slist STREC //申明节点结构类型

void main()

{

double s[N]={85,76,69,85,91,72,64,87}, max; //这是程序样本,即所谓N个学生的成绩.但这个N是有限的,静态的,编译的时候,#define N 8,最多就是8个.这显然只是用于测试后面处理用的样本.

STREC *h; //申明了一个节点指针。

此处需要说明一下的是,从这个代码的操作来看,这个链表是先进先出的队列操作模式,可以通俗的说h是这个队列的头。但此处代码,多用内存存储了一个0,从某种意义上说,这是不必要的;

h=creat(s);

//建立队列,将数组中的分数样本存储到队列。参数为数组首地址。

outlist(h);

//展示队列数据。

max=fun(h);

//调用fun,返回最大的分数值。

printf(“max=%6.1f\n”,max);

//按照指定宽度打印浮点数格式的结果值。

}

————————————————————–

下一个,按顺序来看,建立队列。

STREC *creat( double *s) //返回队列头的地址(指针)。参数为指向双精度数据变量的指针。

{

STREC *h,*p,*q; //此处说明:h存放队列头地址,p存放当前访问队列节点地址(已经进入队列,或者说当前队列尾节点地址),q存放新增节点的地址(还没有进入队列);

int i=0; //初始化循环增量

h=p=(STREC*)malloc(sizeof(STREC)); //为队列头分配空间,并用指针变量记录队列头地址。可以认为,当前只有一个节点,既是头,也是尾;

p-s=0; //队列头节点中分数变量赋值为0。这是可以不这样做的。

while(iN) //从第0个数据开始存储,一直到第N-1个数据,共计存储N个数据,将数据存储完成后退出循环

{

q=(STREC*)malloc(sizeof(STREC)); //为新节点数据分配空间,首地址保存在q中

q-s=s[i]; //将数组中第i个对应分数数据存入新节点对应位置。

i++; //循环变量自增1

p-next=q; //将新节点链接到队列尾。或者说,当前队列尾的下一个节点是上面构造的那个节点;

p=q;///重新记录或者说更新队列尾

}

p-next=0; //此处对于这种用法不发表看法;意思是,最终形成的队列“尾节点的下一个节点不存在”,就是表示队列生成完毕,此时p就是真正的队列尾,后面再也没有其它节点了。

return h; //将队列头地址返回

}

———————————————-

下一个展示队列

void outlist(STREC *h)

{

STREC *p; //申明存放节点地址的指针标量

p=h-next; //取得队列中第二个节点的地址。因为在构造时,第一个节点中的分数数据是0,所以,从第二个开始打印。

printf(“head”); //开始做打印提示

do

{

printf(“-%2.0f”,p-s); //按照定制格式打印当前节点中的分数值

p=p-next; //取得下个节点的地址

}

while(p!=0) ; //队列没有打印完的话,继续。此处用法不算标准用法。当然,原理上没有问题。

printf(“\n\n”);

}

————————————————————————————-

最后一个

double fun( STREC *h ) //在队列中,找到最大的分数值

{

double max; //申明存放最大分数数据的变量

STREC *q=h; //申明指向队列的指针变量

max=h-s; //用队列头中的数据初始化最大分数值。即:max=0;

do

{

if(q-smax) //用队列中的当前节点(其实是每一个节点)中的数据与当前MAX(目前选出的最大数)做比较。包括队列头重的那个’0‘,即第一次比对的时候,是if(00).

max=q-s; //总是存放比较大的那个数

q=q-next; //取队列中下一个节点

}

while(q!=0); //队列没有遍历完的话,继续

return max; /队列遍历完成,返回最大的那个数

}

——————–

希望能够帮到你!

天啊,我早上打开楼主这个求助,我以为可能回答的人不会太多,由于我还在忙,途中吃了个饭,才慢慢过来写,结果…不过我比较了下,还是我写的要详细些。(一楼有点晕,估计他以后自己看了都会笑自己), 最重要的是,大家能帮到你,就OK了!

原创文章,作者:OPKR,如若转载,请注明出处:https://www.506064.com/n/137584.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
OPKROPKR
上一篇 2024-10-04 00:17
下一篇 2024-10-04 00:17

相关推荐

  • 想好好学但又看不懂

    本文将从多个方面阐述如何在进阶编程学习中应对看不懂的情况以及解决方法。 一、阅读文档和代码注释 阅读文档对于理解代码非常重要,一个好的代码注释也能够让我们更容易地理解代码的含义。当…

    编程 2025-04-29
  • AES加密解密算法的C语言实现

    AES(Advanced Encryption Standard)是一种对称加密算法,可用于对数据进行加密和解密。在本篇文章中,我们将介绍C语言中如何实现AES算法,并对实现过程进…

    编程 2025-04-29
  • 学习Python对学习C语言有帮助吗?

    Python和C语言是两种非常受欢迎的编程语言,在程序开发中都扮演着非常重要的角色。那么,学习Python对学习C语言有帮助吗?答案是肯定的。在本文中,我们将从多个角度探讨Pyth…

    编程 2025-04-29
  • 数据结构与算法基础青岛大学PPT解析

    本文将从多个方面对数据结构与算法基础青岛大学PPT进行详细的阐述,包括数据类型、集合类型、排序算法、字符串匹配和动态规划等内容。通过对这些内容的解析,读者可以更好地了解数据结构与算…

    编程 2025-04-29
  • Python被称为胶水语言

    Python作为一种跨平台的解释性高级语言,最大的特点是被称为”胶水语言”。 一、简单易学 Python的语法简单易学,更加人性化,这使得它成为了初学者的入…

    编程 2025-04-29
  • OpenJudge答案1.6的C语言实现

    本文将从多个方面详细阐述OpenJudge答案1.6在C语言中的实现方法,帮助初学者更好地学习和理解。 一、需求概述 OpenJudge答案1.6的要求是,输入两个整数a和b,输出…

    编程 2025-04-29
  • Python按位运算符和C语言

    本文将从多个方面详细阐述Python按位运算符和C语言的相关内容,并给出相应的代码示例。 一、概述 Python是一种动态的、面向对象的编程语言,其按位运算符是用于按位操作的运算符…

    编程 2025-04-29
  • 数据结构学生成绩管理系统

    在现代教育中,学生成绩的管理已经成为了一个不可或缺的部分。借助数据结构,一个高效、可靠的学生成绩管理系统可以被轻松实现。 一、数据结构的选择 在构建学生成绩管理系统时,选择合适的数…

    编程 2025-04-29
  • Python语言由荷兰人为中心的全能编程开发工程师

    Python语言是一种高级语言,很多编程开发工程师都喜欢使用Python语言进行开发。Python语言的创始人是荷兰人Guido van Rossum,他在1989年圣诞节期间开始…

    编程 2025-04-28
  • Python语言设计基础第2版PDF

    Python语言设计基础第2版PDF是一本介绍Python编程语言的经典教材。本篇文章将从多个方面对该教材进行详细的阐述和介绍。 一、基础知识 本教材中介绍了Python编程语言的…

    编程 2025-04-28

发表回复

登录后才能评论