2 bsj1995 BSJ1995 于 2016.03.23 13:38 提问

实现以下对单链表的操作,要求单链表一次遍历效率(数据结构c++)

double averageExceptMaxMin(SinglyList &list) ​//去掉最高分和最低分,再求平均值

2个回答

caozhy
caozhy   Ds   Rxr 2016.03.23 15:48
 double averageExceptMaxMin(SinglyList &list)
{
    double d = 0.0;
        int n = 0;
        double max = 0.0;
        double min = 0.0;
     Node * node = &list.head;
     while (node != NULL)
        {
            d += node->value;
                n++;
                if (max < node->value) max = node->value;
                if (min > node->value) min = node->value;
            node = node->next;
        }
        return (d - max - min) / (double)(n - 2);
}
caozhy
caozhy double min = 0.0; 这个修改下 double min = 101.0; //假设分数最高是100
2 年多之前 回复
caozhy
caozhy double min = 0.0; 这个修改下 double min = 101.0; /假设分数最高是100
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2016.03.23 15:57

其中具体和你链表有关的细节你照着修改下。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
数据结构——单链表的创建、删除、遍历以及节点的插入、删除等操作
1、创建一个结构体:创建一个包含自身结构的结构体,该结构体包含一个数据域和指针域 1、链表初始化:在链表的初始化过程中要为一个结点用malloc函数分配一个空间,并且时next指针指向一个NULL,然后返回链表(注意判断空间时候申请成功) 3、初始化创建链表:创建链表要分为头插法和尾插法,该部分要注意用malloc申请的空间是在堆里面,而用int等定义的申请的空间是在栈里面。 3
数据结构单链表的各种操作C++实现
//该程序实现了线性表的链式存储结构之单链表和各项操作 #include<iostream> #include<tchar.h> using namespace std;//****线性表和一些基础的定义***** #define ElemType int /*表中数据元素类型*/ typedef struct Node{ ElemType data; Node* next
数据结构和算法C++语言实现:链表的实现
链表使用面向对象的方法实现,C++
带头结点的单链表实现就地逆置的更优方法
在习惯上,我们在实现链表的逆置时都会采用从第一个结点开始遍历并不断将链表的指向逆置的方法,但这样做效率其实不高。假设要逆置的链表为L,更好的方法是先用指针p保存L-〉next,再将链表L的头结点置为Null,亦即L-〉next=Null,而后将p所指向的原存在于L的各个结点插入在已经置空的L中,作为L的第一个元素结点,p则每次下移用于记录剩下结点的位置。具体代码如下: p=L->next; L
C语言实现链表,创建、插入、查找、删除、遍历等基本操作
C与语言实现链表的创建、插入(头插法、尾插法)、遍历、查找、删除操作
只遍历一次,将单链表中的元素顺序反转过来
转载请注明出处。 思想很简单,边遍历边将指针反向,顺便将数据往前移一个单位,这样原来的最后一个节点就变成头节点了。 代码实现如下: #include #include typedef struct LNode { int data; struct LNode *next; }LNode,*linkList; linkList creatLinkList(int n) {//创
查找单链表的倒数第k个节点,要求只能遍历一次链表
为了得到倒数第k个结点,很自然的想法是先走到链表的尾端,再从尾端回溯k步。可是输入的是单向链表,只有从前往后的指针而没有从后往前的指针。因此我们需要打开我们的思路。既然不能从尾结点开始遍历这个链表,我们还是把思路回到头结点上来。假设整个链表有n个结点,那么倒数第k个结点是从头结点开始的第n-k-1个结点(从0开始计数)。如果我们能够得到链表中结点的个数n,那我们只要从头结点开始往后走n-k-1步就可
c++实现单链表创建,删除,遍历,插入,修改操作
#include #include #include using namespace std; struct Node { int data; struct Node* next; }; struct Node* build_list(int n) { Node *head =(struct Node*)malloc
剑指offer 15---查找单链表的倒数第k个节点,要求只能遍历一次链表
查找单链表的倒数第k个节点,要求只能遍历一次链表 #include #include using namespace std; struct ListNode { int _value; ListNode* _next; ListNode(const int& value) :_value(value) , _next(NULL) {} }; //查找单链表的倒数第K个结
C++编程实现单链表的逆置
实现一单链表的逆置,并输出逆置前后的结果。。。 写的简单一点,参考写法: #include using namespace std; typedef struct list { int data; struct list *next; ;}LIST; LIST * creat()//创建链表 { LIST *head,*p; int flag=1,d; head = n