二级C语言(6)
来源:互联网 发布:php程序员主要职责 编辑:程序博客网 时间:2024/05/01 08:22
5.函数和递归调用(看教材)
6.结构和链表(难点)
链表的处理(这里只讲单向不循环链表)
这种链表分为:
1.不带头结点的链表
N D1 N D2 N D3 NULL D3 head
1. 带头结点的链表
head NULL N D1 N D2 N D3 NULL D3
为什么要有这样的区别呢?你先想一想。
2. 在不带头结点的链表中插入
分为两中情况(有些地方分3种情况)
2.1. 在链表首
起始数据定义
typedef struct slist
{
int Data;
slist *Next;
};
N D1 N D head N D NULL D
N D New N D NULL D NULL DNew head
slist *new;
New->Date=值;
New->Next=NULL;
N D New N D NULL D N DNew head
New->Next=head;
N D New N D NULL D N DNew × head
head=New;
*注意: New->Next=head; head=New;不能交换,为什么呢?你想一想?
2.2. 在链表中和表尾
N D N D NULL D p
找到要插入的位子
N D New N D NULL D N DNew p
slist *new;
New->Date=值;
New->Next=NULL;
N D N D NULL D New N DNew p
New->Next= p->Next;
/*表尾时p->Next 是NULL*/
N D N D NULL D New N DNew p ×
p->Next=New;
3. 在带头结点的链表中插入
N head N D NULL D p head 。。。。
找到要插入的位子
N head New N D NULL D N DNew p head 。。。。
slist *new;
New->Date=值;
New->Next=NULL;
。。。。 N head N D NULL D New N DNew p head
New->Next= p->Next;
/*表尾时p->Next 是NULL*/
N head N D NULL D New N DNew p × 。。。。
p->Next=New;
对比带头结点的链表中插入和不带头结点的链表中插入,比较后你会发现在带头结点的插入较简单。
4. 删除
N head N D NULL D p head
p->Next= p->Next ->Next;
例1. N名学生的成绩放在带头结点的链表里。请编制一函数fun(),其功能是:其功能就是计算成绩的平均数,并将其返回。
例如: 成绩:85,76,69,85,91,72,64,87
平均成绩:78.625
注意:部分源程序已给出。
请勿改动主函数main()的内容。
试题程序:
#include <stdlib.h>
#include <stdio.h>
#define N 8
struct slist
{
double s;
struct slist *Next;
};
typedef struct slist STREC;
double fun(STREC *h)
{
}
STREC * Create(double *s)
{
STREC *h,*p,*q;
int i=0;
h=p=(STREC *)malloc(sizeof(STREC));
p->s=0;
while(i<N)
{
q=(STREC *)malloc(sizeof(STREC));
q->s=s[i];
i++;
p->Next=q;
p=p->Next;
}
p->Next=0;
return h;
}
outlist(STREC *h)
{
STREC *p;
p=h->Next;
printf("head");
do
{
printf("->%
p=p->Next;
}while(p!=0);
printf("/n/n");
}
main()
{
double s[N]={85,76,69,85,91,72,64,87},ave;
STREC *h;
h=Create(s);
outlist(h);
ave=fun(h);
printf("ave=%
}
本题难点:如何遍历整个链表,但在试题程序有。所以并不难。
参考答案:
double fun(STREC *h)
{
double aver=0.0;
while(h!=NULL)
{
aver+=h->s;
h=h->Next;
}
aver/=N;
return aver;
}
- 二级C语言(6)
- 二级C语言复习6
- 二级C语言(1)
- 二级C语言(2)
- 二级C语言(3)
- 二级C语言(4)
- 二级C语言(5)
- 二级C语言
- C语言二级指针
- C语言二级指针
- C语言 二级指针
- C语言二级指针
- C语言考试 计算机二级
- 计算机二级C语言题目
- 二级C语言备考经验谈
- 二级C语言来了
- 二级C语言常见易错题
- 安徽省二级C语言试题
- IGFEL CODE OF CONDUCT
- 一个完整的新闻发布系统(1)
- 二级C语言(5)
- 如何实现对页面select进行强制赋值
- windows XP 系统服务“关闭”详细列表,释放N多内存
- 二级C语言(6)
- 摘要:英语词汇记忆方法大家谈
- 我写的第一个求完数的代码。
- hello
- 在DELPHI程序中自动设置ODBC数据源
- ASP.NET 大文件上传组件[无组件上传](AspnetUpload 2.1 release)
- Matrix-与Java共舞
- 九大数据仓库方案特点比较(转载)
- CVSNT和WinCVS的安装问题