求教一个数据结构单链表的题目~~~最好可以解释以下

2025-02-27 02:30:35
推荐回答(2个)
回答1:

#include #include
#define Length 10
typedef struct LNode
{
int elem;
struct LNode *pNext;
}LNode, *LinkList;

LNode * CreatLinkList(int n);
int GetEvenNumAndMaxValue(LinkList L, int *Max, int *EvenNum);

void main()
{
LinkList L;
int Max = 0, EvenNum = 0, Result = 0 ;

L = CreatLinkList(Length);
Result = GetEvenNumAndMaxValue(L, &Max, &EvenNum);
printf("最大值为:%d, 偶数数字的个数%d", Max, EvenNum);
}

int GetEvenNumAndMaxValue(LinkList L, int* Max, int* EvenNum)
{
int i = 0;
LinkList p, q;

p = L;
q = p->pNext;

*EvenNum = 0;

if(p->pNext == NULL)
{

return -1;
}

*Max = p->elem;

while(q!=NULL)
{

if(p->elem < q->elem)
{
*Max = q->elem;
}

if(((p->elem)%2) == 0)
{
(*EvenNum) += 1;
}

p = p->pNext;
q = q->pNext;
}

if(((p->elem)%2) == 0) //对最后一个元素作判断
{
(*EvenNum) += 1;
}

return 0;
}

LinkList CreatLinkList(int n)
{
int i = 0;
LinkList p, q;

printf("Please input the Data for LinkList Node:\n");

p = q = (LinkList)malloc(sizeof(LNode)); //已经有一个节点
p->pNext = NULL;
scanf("%d", &p->elem);

do
{
p->pNext= (LinkList)malloc(sizeof(LNode));
p = p->pNext;
scanf("%d", &p->elem);
p->pNext = NULL;
i++;
}while(i
return q;
}

回答2:

去看 c2-2.h 的文件啊
里面有很多函数 包括创建链表的函数 应该存在一个参数是制定数据元素个数的

输出偶数的个数只要用for循环 不断的让一个指针指向当前的节点的next指针
如果该节点是偶数 那么就记下1

3和2 类似的 思想基本就这样 你没有c2-2.h文件给我们看
没人能用具体程序解答的