#define MaxSize 100000 #include<stdio.h> #include<stdlib.h> typedef int ElemType; typedef struct{ ElemType data[MaxSize]; int length; }List; void InitList(List &l){ l.length=0; } void swap(int *a,int *b) { int t=*a;*a=*b;*b=t; } int InsElem(List &l,ElemType x,int i){ int j; if(i<1||i>l.length+1) return 0; for(j=l.length;j>i;j--) l.data[j]=l.data[j-1]; l.data[i-1]=x; l.length++; return 1; }
时间: 2023-07-15 22:14:17 浏览: 60
这段代码定义了一个线性表的结构体,并实现了线性表的初始化和插入元素操作。具体解释如下:
1. 宏定义:`#define MaxSize 100000` 定义了线性表最大长度为100000,可以根据实际需求修改。
2. 头文件:`#include<stdio.h>` 和 `#include<stdlib.h>` 分别包含了标准输入输出库和标准库,以便后续使用。
3. 类型定义:`typedef int ElemType;` 定义了一个元素类型为整型的别名 `ElemType`。
4. 结构体定义:`typedef struct{ ElemType data[MaxSize]; int length; }List;` 定义了一个线性表结构体,包含了一个元素数组和当前线性表长度。
5. 初始化函数:`void InitList(List &l){ l.length=0; }` 将线性表的长度设为0,表示该线性表为空。
6. 元素插入函数:`int InsElem(List &l,ElemType x,int i){...}` 将元素 `x` 插入到线性表 `l` 的第 `i` 个位置上,插入成功则返回1,否则返回0。
算法流程:
- 判断插入位置是否合法,若不合法则返回0。
- 从线性表的最后一个元素开始往前遍历,将第 `j` 个元素复制到第 `j+1` 个元素的位置,直到第 `i` 个位置。
- 在第 `i-1` 个位置插入元素 `x`。
- 将线性表长度加1。
- 返回1表示插入成功。
7. 辅助函数:`void swap(int *a,int *b) { int t=*a;*a=*b;*b=t; }` 定义了一个交换两个整型变量值的函数,后续可能会用到。
总的来说,这段代码实现了线性表的初始化和插入元素操作,但是还缺少其它基本操作,如删除元素、查找元素等。如果需要更完善的线性表操作,需要再进行补充。