已知一个带头结点的单链表头指针为head,数据域的值为整数,数据类型定义如下:
typedef struct node{
int data;
struct node *next;
}Lnode, *LinkList;
(1)设计一个函数float avgList(LinkList head),统计head为头指针的单链表中元素的平均值并返回。
(2)void deleX(LinkList head, int x),在head为头指针的单链表中删除所有值为x的元素结点。
已知一个带头结点的单链表头指针为head,数据域的值为整数,数据类型定义如下:
typedef struct node{
int data;
struct node *next;
}Lnode, *LinkList;
(1)设计一个函数float avgList(LinkList head),统计head为头指针的单链表中元素的平均值并返回。
(2)void deleX(LinkList head, int x),在head为头指针的单链表中删除所有值为x的元素结点。
大概这样子。
float avgList(LinkList head)
{
float sum = 0;
int n = 0;
LinkList p = head->next;
while (p)
{
n++;
sum += p->data;
p = p->next;
}
return sum / n;
}
void deleX(LinkList head, int x)
{
LinkList q, p = head;
while (p->next)
{
if (p->next->data == x)
{
q = p->next;
p->next = p->next->next;
free(q);
}
else
p = p->next;
}
}