对于线性表最常用的操作是查找指定序号的元素和在末尾插入元素

17.对于线性表最常用的操作是查找指定序号的元素和在末尾插入元素,则选择( )最节省时间
A)顺序表 B)带头结点的双循环链表
C)单链表 D)带尾结点的单循环链表
为什么选择A选修

选修??选项吧?
简单来说,其它三个都是链表,只有A不是链表,单选题啊,就算不懂也会选A
链表的有点是插入,删除高效,但指定序号查找,末尾插入也不是优点,因为链表必须进行遍历才行。而且末尾插入要遍历到尾部。而顺序表直接通过下标就可以得到指定序号的数据了,都不需要查找啊。末尾也很清楚,顺序表有个长度数据可以马上定位到末尾所在位置,所以非常高效

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 文章:数据结构 链表【按位序查找指定数据域的元素】 中也许有你想要的答案,请看下吧
  • 除此之外, 这篇博客: 【数据结构】要求:a.输入一组整型元素序列,建立线性表。b.实现该线性表的遍历。 c.在该线性表中查找某一元素,查找成功显示查找元素,否则显示d.在该线性表中删除或插入指定元素。中的 顺序存储结构 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    // An highlighted block
    #include<stdio.h>
    #include<stdlib.h>
    #define ListInitSize 10
    #define ListIncrement 10
    typedef struct{
    	int *base;
    	int length;
    	int listsize; 
    }SqList;
    void InitSqList(SqList &L){
    	L.base=(int*)malloc(ListInitSize*sizeof(int));
    	if(!L.base)
    	exit(0);
    	L.listsize = ListInitSize;
    	printf("请输入线性表长度:\n");
    	scanf("%d",&L.length);
    	printf("请输入%d个整形元素:\n",L.length);
    	for(int i=0;i<L.length;i++)
    	scanf("%d",&L.base[i]);
    }
    void TraversalList(SqList &L){
    	printf("**********遍历线性表*************\n"); 
    	for(int i=0;i<L.length;i++)
    	printf("%3d",L.base[i]); 
    	printf("\n");
    }
    void LocateElem(SqList &L,int &e){
    	int i = 0;
    	while(i<L.length){
    		if(L.base[i] == e){
    			printf("元素%d在线性表中是第%d位\n",e,i+1);
    			break;
    		}
    		else 
    		i++;
    	}
    	if(i >= L.length)
    	printf("查找失败\n"); 
    }
    void ListInsert(SqList &L,int &i,int &e){
    	if(i<1||i>L.length+1){
    		printf("输入i值非法。\n");
    		exit(0);
    	}
    	if(L.length>=L.listsize){
    		int *newbase = (int*)realloc(L.base,L.listsize+ListIncrement*sizeof(int));
    		if(!newbase)
    		exit(0); 
    	}
    	for(int j=L.length-1;j>=i-1;j--)
    		L.base[j+1] = L.base[j];
    	L.base[i-1] = e;
    	L.length++;		
    }
    void ListDelete(SqList &L,int i,int &e){
    	if(i<1||i>L.length+1){
    		printf("输入i值非法。");
    		exit(0);
    	}
    	e = L.base[i-1];
    	printf("删除元素的值为:%d\n",e); 
    	for(int j=i;j<L.length;j++)
    	L.base[j-1] = L.base[j];
    	L.length--;
    }
    int main(){
    	SqList L;
    	int i,e;
    	InitSqList(L);
    	TraversalList(L);
    	printf("请输入需要查找的元素:\n");
    	scanf("%d",&e);
    	LocateElem(L,e); 
    	printf("请输入需要插入的元素和想插入的位置:\n");
    	scanf("%d%d",&e,&i);
    	ListInsert(L,i,e); 
    	TraversalList(L);
    	printf("请输入要删除的元素位置:\n");
    	scanf("%d",&i);
    	ListDelete(L,i,e);
    	TraversalList(L);
    	return 0; 
    }
    
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^