1.已知线性表LA的数据元素(n个,n为偶数),现要求将LA拆开
成两个新的线性表LB,LC。要求LB中的数据元素为LA中的奇数
位序的数据元素(an,a3,…,am-1),LC中的数据元素为LA中的偶数
位序的数据元素(az,a4,…,an)。
2.已知线性表LA的数据元素(n个),现要求将LA的数据元素复
制到另一个线性表 LB中
3.设有一个线性表采用顺序存储结构,表中的数据元素值为正整数
(n个)。设在O(n)时间内,将线性表分成两为两部分,其中左半部
分每个元素都小于原表的第一个元素,而右半部分则相反。
有没有人能教一下怎么写这数据结构?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注不知道你这个问题是否已经解决, 如果还没有解决的话:- 你可以参考下这篇文章:将数组a中的n个整数按相反顺序存放(数值元素倒序排列)
- 除此之外, 这篇博客: 已知长度为n的线性表A采用顺序储存结构,请写出一个时间复杂度为O(n),空间复杂度为O(1)的算法,该算法可删除线性表中的所有值为item的数据元素。中的 已知长度为n的线性表A采用顺序储存结构,请写出一个时间复杂度为O(n),空间复杂度为O(1)的算法,该算法可删除线性表中的所有值为item的数据元素。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

源代码:#include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR -1 #define MAXSIZE 100 #define OVEERFLOW -2 typedef int Stauts; typedef int ElemType; typedef struct { ElemType *elem; int length; }SqList; Stauts InitList_Sq(SqList &L) { int i; L.elem=new ElemType[10]; if(!L.elem) exit(OVEERFLOW); L.length=10; for(i=0;i<10;i++) L.elem[i]=i; return OK; } Stauts ListDelete(SqList &A,int item) { int i,j; for(j=0;j<A.length;j++) if(A.elem[j]==item) { for(i=j;i<A.length;i++) A.elem[i]=A.elem[i+1]; A.length--; } return OK; } int main() { int i,item; SqList A; InitList_Sq(A); printf("成功构建顺序表\n"); printf("请在表中输入十个元素\n"); for(i=0;i<A.length;i++) { A.elem[i]=i; scanf("%d",&A.elem[i]); printf("%5d",A.elem[i]); } printf("\n"); printf("请输入要删除的数值"); scanf("%d",&item); ListDelete(A,item); printf("操作完成后的数值为:"); for(i=0;i<A.length;i++) printf("%5d",A.elem[i]); printf("\n"); return 0; }
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决 无用评论 打赏 举报