实 训 报 告 册
课程名称: 数据结构实训
开课学期: 2021-2022学年第一学期
院 部:
专 业:
班 级:
学 号:
姓 名:
指导教师:
课程名称 |
数据结构 |
实训内容 |
顺序表的基本操作 |
||||
实训教室 |
台号 |
日期 |
2021.10.13 |
||||
学生姓名 |
学生学号 |
专业班级 |
|||||
目的 要求 |
熟悉掌握线性表顺序存储结构,掌握与应用顺序表的查找、插入、删除等基本操作算法,训练和提高结构化程序设计能力及程序调试能力。 |
||||||
工具 设备 |
计算机一台、Visual C++6.0 |
||||||
内容 过程 |
#include<stdio.h> #include<stdlib.h> #include<string.h> #define MAXSIZE 100 #define ElemType int #define Status int //顺序表的数据结构 typedef struct { ElemType *data; int length; }SqList; //初始化 int InitList(SqList &L) { L.data=new ElemType[MAXSIZE]; L.length = 0; return 0; } //输出 void PrintList(SqList &L) { printf("当前顺序表的所有元素:"); for (int i = 0; i < L.length; i++) { printf("%d ", L.data[i]); } printf("\n"); } //创建顺序表 void Create(SqList &L) { int n; printf("请输入要输入元素的个数:"); scanf("%d", &n); if (n<0 || n>MAXSIZE) { printf("请输入正确的个数!!!!!!\n"); } for (int i = 0; i < n; i++) { printf("请输入第%d个元素:", (i + 1)); scanf("%d", &(L.data[i])); L.length++; } } //插入元素 int InsertList(SqList &L, int i, ElemType e) { if (i<1 || i>L.length + 1) return 0; //插入的位置非法 if (L.length == MAXSIZE) return 0; //表已经满了 for (int j = L.length; j >= i; j--) //i为要插入的实际位置,从1开始,并非下标 { L.data[j] = L.data[j - 1]; //从最后一个元素到i 依次向后移 } L.data[i - 1] = e; //插入 L.length++; return 1; } void Inster(SqList &L) { int i, e, flag; printf("请输入要插入的位置(从1开始)及元素(以,号分隔):"); scanf("%d,%d", &i, &e); flag = InsertList(L, i, e); if (flag) { printf("插入成功!!\n"); PrintList(L); } else { printf("插入失败!!\n"); } } //删除元素 int DeleteList(SqList &L, int i) { if (i<1 || i>L.length) return 0; //位置非法 for (int j = i; j <= L.length - 1; j++) { L.data[j - 1] = L.data[j]; //从i开始到最后一个元素依次向前移 } L.length--; |