C语言数据结构与指针(4)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
你想是怎样的人,你就是怎样的人;你想成为怎样的人,你就会离这个目标不会太远。
数据结构【第四次】实验报告
学院:
班级:
学号:
姓名:
实验四
(一)实验名称:C语言数据结构与指针
(二)实验目的:巩固复习前期所学C语言的函数参数传递、指针和结构体等知识点加强学习数据结构语言基础
(三)实验内容:
1) 学生信息的显示
具体要求如下:
???定义一个结构体描述学生信息(学号
姓名
性别
年龄
住址);
???设计一个函数
用于显示单个学生信息
函数的参数为前面定义的结构体类型;
???设计一个主函数
在主函数中输入学生的信息
并调用前面定义的函数进行显示(学生人数不少于5人)
2) 输入若干个整数作为数组元素值然后按输入时顺序的就地逆置排序最后打印出逆置后的元素值
要求用指针和动态内存分配方法实现例如输入:10 2 30 4 5
逆置后显示为:5 4 30 2 10
(四)源代码:
#define MAXSIZE 100
#include <stdio.h>
#include <iostream.h>
typedef int ElemType;
typedef struct
{
ElemType data[MAXSIZE];
int length;
} SqList;
SqList l;
void InitList(SqList &L)
{
L.length = 0;
}
void CreatSqlist(SqList &L int n)
{
printf("请输入节点");
int i;
for(i=0;i<n;i++)
scanf("%d"
&L.data[i]);
L.length=n;
fflush(stdin);
}
void Output(SqList &L)
{
int i;
for(i=0;i<L.length;i++)
printf("%5d"
L.data[i]);
printf("\n");
}
int chazhao(SqList &L
int x)
{
int i
k;
printf("\n请输入你要查找的元素 x=?");
scanf("%d"
&x);
for(i=0;i<=(L.length+1);i++)
{
if(x==L.data[i])
{printf("要查找的元素%d位于线性表第%d位上\n\n"
x
i+1);
k=0;
break;
}
}
if(k!=0) printf("所要查找的元素%d不在线性表中"
x);
return 0;
}
int GET(SqList &L
int i)
{
int m;
if((i<0)||(i>L.length)){printf("所查找范围超出线性表长度");return 1;}
else if((i>=1)&&(i<=L.length))
{
m=L.data[i-1];
}printf("%d "
m);
return 0;
}
int DELETE(SqList &L
int i)
{
int j;
if(i<1||i>L.length)
{printf("删除错误");return 0;}
else
{
for(j=i;j<L.length;j++)
L.data[j-1]=L.data[j];
L.length--;
}
return 1;
}
int INSERT(SqList &L
int x
int i)
{
int j;
if(L.length>=MAXSIZE-1)
{printf("over flow");return 1;}
else if((i<1)||(i>L.length+1))
{printf("插入错误");return 1;}
else
{for(j=L.length;j>=i-1;j--)
L.data[j+1]=L.data[j];
L.data[i-1]=x;
L.length=L.length+1;
}
return 0;
}
int main()
{int n
i
k
x;
InitList(l);
printf("请输入线性表的长度 ");
scanf("%d"
&n);
CreatSqlist(l
n);
Output(l);
printf("请输入你要查找的数所在的节点位置");
scanf("%d"
&i);
GET(l
i);
chazhao(l
x);
printf("请输入你要删除元素的位置=?");
scanf("%d"
&k);
DELETE(l