Lc.len = k;// C顺序表合并后的实际长度}int main()//编写主函数,传入数据 {SqList sqa, sqb, sqc;//定义结构体变量int a, b;printf("请输入顺序表A的元素个数:");scanf_s("%d",&a);printf("请输入顺序表A的数据:");for (int i = 0; i < a; i++)//依次输入A数据...
}//有序表合并,顺序表实现,pa,pb,pc分别指向两表第一个元素Status MergeList(SqList listA,SqList listB,SqList *listC) {//由listA和listB长度初始化listClistC->length=listA.length+listB.length; listC->elem=(ElemType*)malloc(sizeof(ElemType)*(listC->length)); ElemType*pa,*pb,*pc,*pa_l...
L->elem = (int*)malloc(sizeof(int) * MAXSIZE); L->length = 0; } void DestroyList(SqList *L) { if (!L->elem) { printf("顺序表不存在\n"); exit(1); } free(L->elem); L->length = 0; } int GetElem(SqList L, int i, int* e) { if (!L.elem) { printf("顺序表不...
Lnode=(int*)malloc(sizeof(int)*Lc->length);//在别处开辟一处空间,不是在数据结构里开辟int*p=L->firstLnode;int*p1=L1->firstLnode;int*pc=Lc->firstLnode;//各顺序表的头指针int*p_Last;int*p1_Last;//各顺序表的尾指针p_Last=L->firstLnode+L->length-1;p1_Last=L1->length-1+L1->fi...
c->next=b;c=b;b=b->next;} else if (a != NULL && b != NULL) { c->next=a;c=a;...
1、c语言是没有引用的,可以使用一个const指针来模拟引用void InitList(SqList *L){L->last=0;}。2、这个是顺序表的初始化,不用管int LenList(SqList L){return L.last;}。3、插入操作,这一步是关键,插入顺序表int InsertList(SqList *L,int i,ElemType x){int k;if(L->last>=MAX...
1.最容易的办法就是把两个表保存在一个新的表里,然后冒泡排序(就是这么暴力。)2.不过这个问题用指针实现最方便了。两个指针分别指着两个递增表:比较指针所指的值大小,将小的那个保存在新的表里,然后将小的那个指针往前走一步。再比较,再保存,再走...直到其中一个表走完,把另一个表剩...
销毁顺序表,销毁线性表之后还能不能做插入,删除等操作,如果选其他操作,就要提示线性表已经销毁不存在; 测试合并操作,第一个线性表中的元素是(2,3,4,5),第二个线性表中的内容是(1,4,5,6,7),合并后的结果,请输出。 验证性 重点: 顺序表的定义和实现 难点: 两个非递减有序表的去重合并 实验...
1、应该是编译时就存在问题吧,你在函数SequenceList中的语句table1[i] = scanf("%d",k);中的k未定义,导致有问题。解决这个问题要么将在main中定义k的语句移到SequenceList中,要么将k定义成全局变量;2、另外scanf("%d",k)请改成scanf("%d",&k)或者scanf("%d",&(table1[i]);。
因为顺序表La、Lb都已经排好序了,那么要将他们合并成有序表放在Lc中,将La和Lb从他们的初始元素进行比较,谁小就将谁放入到Lc中,同时Lc和放入元素的顺序表都指向下一个元素,然后继续循环。最后肯定会有一个顺序表先为空,那么就把不为空的顺序表中的元素直接复制到表Lc中即可。