按所给函数声明编写一个算法,从表头指针为HL的单链表中查找出具有最大值的结点,该最大值由函数返回,若

作者&投稿:富盲 (若有异议请与网页底部的电邮联系)
编写一个算法从表头指针为HL的单链表中查找出具有最大值的结点该最大值由函数返回若单链表为空则中止运行~

//删除单链表中最大元素Del-max(linka){inttmp;element*p;element*max;p=a;//指针,用于遍历链表,取数与当前最大结点值比较max=a;//指针,用于记录最大元素所在位置(未考虑有多个最大元素)tmp=p->data;//变量,用于记录当前最大结点值while(a->next!=null){p=p->next;if(p->data>tmp){、//如果当前指针所指结点值大于当前tmp所保留的值,则记录max=p;//当前位置(放入到max),记录当前最大值(放入tmp)tmp=p->data;}//endofif}//endofwhiletmp=max->next->data;//一次遍历后max指针所指结点就是最大元素,删除之。。。max->data=tmp;max->next=max->next->next;//删除方法能看懂么?好好思考。。。}//endofDel-max

void Inverse(Node *first)
{
Node *newhead,*h_next;

newhead=null;
h_next=first;

while(first!=null)
{
if(null==newhead)
{
newhead=first;
newhead->next=null;
}
else{
first->next=newhead;

newhead=first;
}
first=h_next;
if(h_next!=null){
h_next=h_next->next;
}
}
}
first=newhead;
}

不出意外应该是这样。在纸上画了画。

遍历链表即可
EIemType MaxValue(LNOde*HL)
{
ElemType max = HL->data; //初始化max
HL = HL->next;
while(HL) //遍历链表
{
if(max < HL->data)max = HL->data; //更新max
HL = HL->next;
}
}


编写代码,定义一个函数,设置两个参数实现可以打印1-100以内任意范围的...
if (i > 1) { if (i % 2 == 0 || i <= 1) { continue;} else { for (int j = 3; j <= i\/2; j += 2) { if (i % j == 0) { break;} } if (j > i\/2) { printf("%d ", i);} } } } } int main() { print_primes(1, 100);return 0;} 这个函...

C语言:编写一个函数,求两个整数的和与乘积
void add_mul(int x,int y,int *sum,int *product){ sum=x+y;produnct=x*y;}

编写一个函数计算n!,在主函数中调用该函数求1!+2!+3!+…+10!。 要求...
include<iostream> using namespace std;int factorial(int a);\/\/声明计算阶乘函数 int main(){ int sum=0,n;cout<<"请输入n的值"<<endl;cin>>n;for(int i=1;i<=n;i++){ sum+=factorial(i);\/\/调用函数 } cout<<"n的阶乘为:"<<sum<<endl;return 0;} int factorial(int a){...

编写函数,实现顺表的选择.序,函数声明如下void selection(seqlist*...
\/\/新建一个对象指针,调用成员函数即可 int main(){ SeqList list = new SeqList(10);list->input();\/\/键盘输入,构建顺序表 \/\/list->output();\/\/输出函数 cout<<"Length of List:"<<list->Length()<<endl;\/\/计算表长 \/\/bool getData(int i,int &x);\/\/去第i个表项的值 \/\/bool ...

求a+b(a、b为变量名)使用基本的输入输出函数编写一段程序
以下是一个用C语言编写的求a+b的程序,使用了基本的输入输出函数:在这个程序中,首先声明了三个变量a、b和sum,用于存储输入的值和计算结果。然后使用printf函数输出提示信息,让用户输入a和b的值,使用scanf函数读取用户输入的值,并计算a+b的结果存储到sum变量中。最后使用printf函数输出计算结果。

用c语言编写一个自定义的函数时的基本步骤
1 根据功能,想一个函数名,并设计好返回值类型以及参数列表。参数列表包括参数个数,每个参数类型,以及该参数的作用。2 根据函数要实现的功能,实现函数的主体代码。3 按照你设计的想法,传入不同参数类型,验证函数功能并调试。

用c语言编写:编写一个函数,由实参传来一个字符串,统计此字符串中字母...
include <stdio.h> include <string.h> int letter,number,blank,other;void count(char str[]){ int i;for(i=0;str[i]!='\\0';i++){ if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))letter++;else if(str[i]>='0'&&str[i]<='9')number++;else...

编写一个判断素数的函数,主函数中输入一个整数,输出是否是素数的信息...
include<iostream> include<cmath> using namespace std;void fun(int a){ int k,i;k=sqrt(a);for(i=2;i<=k;i++)if(a%i==0)break;if(i>k)cout<<a<<"是素数"<<endl;else cout<<a<<"不是素数"<<endl;} main(){ int a;cout<<"请输入一个整数";cin>>a;fun(a);return ...

编写一个函数void strcopy(char *s,char *d)
void strcopy(char *s,char *d){ if(!d)return;if(!s)return;while((*s++ = *d++)!='\\n');}

c语言编写一个函数sort按照学生编号由小到大的顺序排列二维数组,两门...
数组的4种声明方式:1.先声明再初始化例如:\/\/1.声明int[] nums;\/\/初始化nums = new int[5];2.声明并初始化例如:\/\/2.声明、初始化int[] nums = new int[10];3.创建数组同时赋值例如:\/\/3.创建数组同时赋值String[] names=new String[]{"大名","小米","夏雨荷"};int[] ages=new ...

西安区18980458339: 从表头插入节点建立单链表的算法如何写 -
独孤哲去甲: 何在指针q指向的结点后面插入结点.该过程的步骤如下:(1)先创建一个新结点,并用指针p指向该结点.(2)将q指向的结点的next域的值(即q的后继结点的指针)赋值给p指向结点的next域.(3)将p的值赋值给q的next域.通过以上3步就...

西安区18980458339: 试编写一个算法,在带表头结点的单链表中寻找第i个结点. -
独孤哲去甲: typedef struct LNode { int data; LNode *next; }LNode; LNode Find( LNode*bt , int i) { LNode * p; int count; p=bt->next; while (count!=i) { p=p->next; count ++; } return p; }

西安区18980458339: 2.设Head为带表头结点的单链表的头指针,试写出算法:若为非空表,则输出首结点和尾结点的值(data值);否则输出:“Empty list!”.(要构建单链表) -
独孤哲去甲: #include<stdio.h>#include<stdlib.h> typedef struct node{ int data; struct node *next; }node; node *init() {return NULL; } void display(node *head) { node *p,*q; if(!head) printf("Empty list!\n"); else{ p=head; printf("list 第一个data:%d\n",p->data); ...

西安区18980458339: 用c语言编写一个算法,判断带表头结点的单链表是否递增有序,下面的程序改不出来错误 -
独孤哲去甲: 你这个算法是错误的,正确的思路是在对单链表进行扫描时,每次都是将前后两个结点进行比较,若前面的元素值大于当前元素值,则提前退出扫描,最后判断是否到达表尾.程序如下 #include <stdio.h> int judge (slink *head) {slink *preptr = ...

西安区18980458339: 编写程序. 设Head为带表头结点的单链表的头指针,试写出算法:若为非空表,则输出:最大结点和最小结点的值(data值);否则,输出:“Empty list”. -
独孤哲去甲: 我写了个 可以看看 随机生成3组的#include <stdio.h>#include <malloc.h>#include <stdlib.h>#include <time.h> typedef struct Node { int data; struct Node *next; }List; void PRINT(List *head)//题目要求的函数 { List *p; int max=0,min=0; if(!head) { printf...

西安区18980458339: 从表头到表尾逆向建立单链表的算法的解释 他是怎么逆向建立的 求过程.. -
独孤哲去甲: 这个是从头部插入结点数据,每次插入结点时都把头结点后面的接到新申请的结点后,p->next=L->next ,p是新申请的吧,L是头结点,然后把新申请的结点接到头结点后面,L->next=p ;这样就是从不断从头部插入结点了..

西安区18980458339: 针对带表头结点的单链表,给出算法中使用的单链表的存储结构(数据类型)的定义.试编写下列函数. -
独孤哲去甲: // 节点数据结构定义struct Node{ int data; struct Node *next;};// 定位第i个节点struct Node *Locate(struct Node head, int i){ struct Node *p = &head; int k; for(k = 0; k < i && p; ++k) { p = p->next; } return p;}// 寻找最大值int max(struct Node head){ ...

西安区18980458339: 编写一个算法,往单链表里数据为w0的结点前面插入一个值为w1的结点 -
独孤哲去甲: 表头node *L p = L q = p -> next while q != NULLif q -> value = w0breakp = p->nextq = p->next if q = NULL没找到数据为w0的节点 elsenode * newNode = (node *)malloc(sizeof(node))newNode->value = w1newNode->next = qp->next = newNode

西安区18980458339: 【C语言】头文件(head.h):void f(void){}/*放的是函数的声明(原型)*/ -
独孤哲去甲: 函数的声明(原型)应该是:1 voidf(void); 而不是:1 voidf(void) { } /* 这是函数的定义 */ 你在两个文件里都有定义(导致链接出来的两个目标文件有两个同名的强符号),当然就会出错.

西安区18980458339: 有一个带头结点的单链表L,设计一个算法将其所有元素逆置 -
独孤哲去甲: struct Node { /* 单链表类型声明 */ ElemType data; /* 数据域 */ struct Node *next; /* 指针域 */ }; void Reverse(Node *head) { /* 从第一结点开始颠倒 */ Node *p, *q; p = head->next; /* p 指向第一个结点 */ head->next = NULL; /* 断开链表表头 */ while (p != NULL) { q = p; p = p->next; /* 当前结点指针后移 */ q->next = head->next; /* 表头插入 */ head->next = q; } }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网