数据结构实验讲义PPT课件
b.num=99103;b.score=90; 学号和成绩*/
c.num=99107;c.score=85; p=p->next;
//a 、b、 c变量赋值
}while(
);
}
前一页 休息
答:p!=NULL
实验内容及要求
9、设计一个可进行复数运算的演示程序。 要求:实现下列六种基本运算:1)由输入 的实部和虚部生成一个复数;2)两个复数 求和;3)两个复数求差;4)两个复数求 积;5)从已知复数中分离出实部;6)从 已知复数中分离出虚部。运算结果以相应 的复数或实数的表示形式显示。
P++; =>P=p->next;
while (p)
{printf(“%ld%5.2f”,p->num,p->score);
P++;
前一页 休息 }
第二讲 线性表
教学目的与要求
– 掌握数据结构中表的基本概念。 – 熟练掌握线性表的基本操作,插入、删除、
查找等运算在顺序存储结构和链接存储结构 上的实现。 – 熟练掌握链表的各种操作和应用。
前一页 休息
讨论
指出下列程序段的错误:
struct student {long num;
答:
float ; struct student *next;
增加:c.next=NULL;
}a,b,c,*p; a.next=&b;
p=a; =>P=&a;
b.next=&c; p=a;
10、设计一个可进行有理数运算的演示程 序。要求:实现两个有理数相加、相减、 相乘以及求分子或求分母的运算。
前一页 休息
实验内容及要求
有10个学生,每个学生的数据包括学号、 姓名、3门课的成绩,从键盘输入10个学 生数据,要求打印出3门课总平均成绩, 以及最高分的学生的数据。
要求:用input函数输入10个学生数据, 用average 函数求总平均分;用max函数 找出最高分的学生数据;总平均分和最高 分学生的数据都在主函数中输出。
前一页 休息
7、设计一个算法求A和B两个单链表表示的集合的 并集。
提示:将A和B合并。
9、用头插法把单链表b中在单链表a中未出 现的结点合并到单链表a中。
前一页 休息
实验三 栈和队列
教学目的与要求
1. 了解栈和队列的特性,以便灵活应用。 2. 熟练掌握栈和有关队列的各种操作和应用。
教学的重点与难点
int length; } typedef struct datatype sqlist ;
前一页 休息
void create (sqlist *a) { int i,n; a->elem=(elemtype *)malloc(MaxLen*sizeof(elemtype)); printf(“创建一个顺序表\n”); printf(“输入元素个数:”); scanf(“%d",&a->length); for (i=0;i<a->length;i++) { printf(“输入第%d个元素值:”,i); scanf(“%d",a->elem+i); } }
栈和有关队列的各种操作和应用
前一页 休息
实验预习检查内容
(3) )*(a->elem+a>length-1-i)
Void disp(sqlist *a) { int I; for (i=0;i<n;i++) printf(“%5d:%d\n”,i+1,*(a-
>elem+i)); }
前一页 休息
void main() { sqlist b,*a; a=&b;; create(a); disp(a); invert(a); disp(a); }
教学的重点与难点
线性表的基本操作在链接存储结构上的实现。
前一页 休息
实验预习检查内容
完成下列程序,指出main的结构 #include <stdio.h> #define MaxLen 50 typedef int elemtype;
struct datatype {elemtype *elem;
数据结构实验讲义
实验一 C语言复习
教学目的与要求
本实验的目的是帮助大家复习C语言的使 用方法,特别是指针、结构体的内容,同 时也为以后的各个实验做准备
教学的重点与难点
指针、结构体、数组三种数据类型的混合 使用
前一页 休息
实验预习检查内容
指针指向数组后,数组元素的访问有哪些形式?
在下列类型定义后,表达式a[3].num的逻辑含义 是什么?类型是什么?
struct student {long num; float score; struct student *next; }a[5];
答:3号元素的num数据域 long类型
前一页 休息
例题
#define NULL 0
head=&a;
struct student
a.next=&b;//a的后续为b
前一页 休息
void invert(sqlist *a)
{
int m=a->length/2,I; elemtype temp; for (I=0;I<m;I++)
{
temp=
;
*(a->elem+i)=
;
=temp;
}
}
前一页 休息
(1)*(a->elem+i)
(2)*(a->elem+a>length-1-i)
{long num;
b.next=&c;
float score;
c.next=NULL;
struct student *next;
p=head;
};
do
main ()
{printf
{ struct student a,b,c,*head,*p; (“%ld%5.1f\n”,p-
a.num=99101;a.score=89.5; >num,p->score );/*输出
前一页 休息
例题
有一个单链表的第一个结点指针为 head,编写一个函数将该单链表逆置, 即最后一个结点变成第一个结点,原 来倒数第二个结点变成第二个结点。
前一页 休息
实验内容及要求
4、7、13必做,其余老师选做几题 4、键盘输入学生信息(包括学号和
成绩),学号为0作为结束标志,建 立其对应的线性表并输出各结点中的 数据。 注:试以顺序表和单链表两种不同的 存储结构实现。