作业帮 > 综合 > 作业

线性表的基本操作 求C或C++代码 和运行结果截图

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/29 22:37:12
线性表的基本操作 求C或C++代码 和运行结果截图
实验一 线性表的基本操作 [ 实验目的] 掌握线性表的两种存储方法的几个基本操作,学习根据实际问题选择存储结构。 [ 实验内容] (1)线性表的初始化操作 (2)线性表的插入(有序) (3)线性表的删除 (4)输出线性表的内容 (5)求2个(有序)线性表共同的元素(交集),并输出。 (6)求2个(有序)线性表的并集(相同元素值的保留一个),并输出 [ 实验要求] 程序用C或C++实现,并调试通过。 [ 作业提交] 将代码贴在下面: 将结果运行截屏贴在下面:
/* A线性表为: 0 3 6 9 12 15 18 21 24 27 B线性表为: 0 2 4 6 8 10 12 14 16 18 C线性表为: 0 6 12 18 D线性表为: 0 2 3 4 6 8 9 10 12 14 15 16 18 21 24 27 在D表中插入数据 : 7 D表插入x后 :0 2 3 4 6 7 8 9 10 12 14 15 16 18 21 24 27 删除D表中数据 : 27 删除x后的D表为 :0 2 3 4 6 7 8 9 10 12 14 15 16 18 21 24 Press any key to continue */ #include #include #define Max 100 // 定义数组的最大长度 typedef int Datatype; // 定义数组元素的数据类型 typedef struct { Datatype data[Max]; // data数组用于开辟一段连续的存储空间 int length; // 当前长度 }SqList; SqList *InitList(int n,int coe) { int i; SqList *L; L = (SqList *)malloc(sizeof(SqList)); L->length = n; for(i = 0; i < n; ++i) L->data[i] = i * coe; return L; } int InsertList(SqList *L,Datatype x) { int i,j; if (L->length >= Max) { printf("overflow!\n"); return 0; } for (i = 0;i < L->length;i++) { if(x data[i]) { for(j = L->length;j >= i;j--) L->data[j + 1] = L->data[j]; // 结点后移 L->data[i] = x; L->length++; return 1; } } L->data[L->length++] = x; return 1; } int RemoveListElem(SqList *L,Datatype d) { int i,j; for(i = 0; i < L->length; ++i) { if(L->data[i] == d) { for(j = i; j < L->length - 1; ++j) L->data[j] = L->data[j + 1]; L->length--; return 1; } } return 0; } SqList *AndList(SqList *A, SqList *B) { int i,j,k = 0; SqList *C = InitList(A->length + B->length,0); for(i = 0; i < A->length; ++i) { for(j = 0; j < B->length; ++j) { if(A->data[i] == B->data[j]) C->data[k++] = A->data[i]; } } C->length = k; return C; } SqList *OrList(SqList *A, SqList *B) { int i,j,flag; Datatype e; SqList *C = InitList(A->length + B->length,0); C->length = A->length; for(i = 0; i < A->length; ++i) C->data[i] = A->data[i]; for(i = 0; i < B->length; ++i) { e = B->data[i]; flag = 1; for(j = 0; j < C->length; ++j) { if(e == C->data[j]) { flag = 0; break; } } if(flag) InsertList(C,e); } return C; } void PrintList(SqList *L) { int i; for(i = 0; i < L->length; ++i) printf("%d ",L->data[i]); printf("\n"); } void main() { SqList *A = InitList(10,3); SqList *B = InitList(10,2); SqList *C = AndList(A,B); SqList *D = OrList(A,B); Datatype x; printf("A线性表为:\n"); PrintList(A); printf("B线性表为:\n"); PrintList(B); printf("C线性表为:\n"); PrintList(C); printf("D线性表为:\n"); PrintList(D); printf("在D表中插入数据 : "); scanf("%d",&x); InsertList(D,x); printf("D表插入x后 :"); PrintList(D); printf("删除D表中数据 : "); scanf("%d",&x); RemoveListElem(D,x); printf("删除x后的D表为 :"); PrintList(D); free(A); free(B); free(C); free(D); }