永发信息网

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

答案:1  悬赏:0  手机版
解决时间 2021-01-23 07:31
  • 提问者网友:精神病院里
  • 2021-01-22 21:41
线性表的基本操作 求C或C++代码 和运行结果截图
最佳答案
  • 五星知识达人网友:一秋
  • 2021-01-22 21:47
#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 <= L->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); }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯