第3题
A.访问第i(1<=i<=n)个结点和求第i个结点的直接前驱(1<i<=n)
B.在第i(1<=i<=n)个结点后插入一个新结点
C.删除第i(1<=i<=n)个结点
D.以上都不对
第4题
A、数组是一种线性结构
B、数组是一种定长的线性表
C、除了插入与删除操作外,数组的基本操作还有存取、修改、检索和排序等
D、数组的基本操作有存取、修改、检索和排序等,没有插入与删除操作
第5题
若一个栈以向量V[1..n)存储,且空栈的栈顶指针top为n+1,则将元素x入栈的正确操作是______。A.top=top+1;V[top]=x;
B.V[top]=x;top=top+1;
C.top=top-1;V[top]=x;
D.V[top]=x;top=top-1;
【我提交的答案】: C |
【参考答案与解析】: 正确答案:C |
解析:栈是运算受限的线性表,只允许在栈顶进行插入和删除操作。栈顶指针为n+1,说明该数组将栈顶放在了下标大的一端,所以,在进行入栈操作时,top指针应该进行减1操作。通常元素进栈的操作为:先移动栈顶指针,后存入元素。移动栈顶指针的操作是“top=top-1;”,存入元素的操作是“V[top]=x;”。本题正确答案为选项C。
这题目 选c 我怎么感觉是出栈的操作 先-- 再赋值, 进栈不应该是 先赋值 再++ 吗? 还是我的题意没有弄明白 ,谢谢你的帮助
第6题
/*第二周顺序表作业: 请先阅读main()函数,了解程序功能,然后实现如下函数,并整个程序调试成功。 int ListInsert_sq(SqList &L, int i, ElemType e); int ListDeleteByIndex_sq(SqList &L, int i, ElemType &e); int ListDeleteByValue_sq(SqList &L, ElemType e); void ListTraverse(SqList L); */ //程序中多处用到了C++中的引用参数传递,请使用C++编译器 #include <stdio.h> #include <stdlib.h> #define MAXSIZE 100 typedef int ElemType; typedef struct { ElemType elem[MAXSIZE+1]; //约定:从elem[1]开始存储元素,elem[0]放弃不用,这样元素在线性表中的位序,与数组下标一致 int length; } SqList; //返回顺序表L中第1个与e相等的数据元素位序 int LocatElem_sq(SqList &L, ElemType e); //在第k个元素前插入元素x,若操作成功返回1, 若操作失败(如k非法、数组空间已满),则返回0 int ListInsert_sq(SqList &L, int k, ElemType e); //按指定位置删除元素:删除线性表L中第k个元素,用e返回其值,L长度减1。若k非法,则返回0,否则返回1 int ListDeleteByIndex_sq(SqList &L, int k, ElemType &e); //按值删除元素:在顺序表L中删除第一个值为e的元素。若删除成功返回1,若e不存在,则返回0 int ListDeleteByValue_sq(SqList &L, ElemType e); //遍历顺序表,输出所有元素 void ListTraverse(SqList L); int main() { SqList L; //顺序表 ElemType e; //存储一个元素值 int i, index; int slt; //存储用户的选择 printf("输入n和n个整数:"); scanf("%d", &L.length); for(i = 1; i <= l.length; i++) 下标从1开始 scanf("%d", &l.elem[i]); while(1) { printf("1.按值查找元素\n"); printf("2.按指定序号删除元素\n"); printf("3.按指定值删除元素\n"); printf("4.在指定位置插入指定元素\n"); printf("5.输出所有元素\n"); printf("0.退出\n"); printf("请输入你的选择:\n"); &slt); if( slt="=" 0) break; switch(slt) case 1: printf("输入待查找元素:"); &e); index="LocatElem_sq(L," e); locatelem()将返回顺序表l中第1个与e相等的元素下标 if(index> 0) printf("找到,下标为%d\n", index); else printf("找不到\n"); break; case 2: //按指定位置删除元素:读入一个序号i,删除线性表L中第i个元素,用e返回其值,L长度减1 printf("请输入待删除元素的序号i:"); scanf("%d", &i); if( ListDeleteByIndex_sq(L, i, e)) { printf("删除成功,被删除的元素是%d\n", e); printf("剩余元素为:\n"); ListTraverse(L); //遍历顺序表,输出所有元素 } else printf("删除失败\n"); break; case 3: //按值删除元素:读入一个整数e,在顺序表L中删除第一个值为e的元素,删除成功返回1,若e不存在,则返回0 printf("请输入待删除元素的值e:"); scanf("%d", &e); if( ListDeleteByValue_sq(L, e)) { printf("删除成功\n"); printf("剩余元素为:\n"); ListTraverse(L); //遍历顺序表,输出所有元素 } else printf("删除失败\n"); break; case 4: //在指定位置上插入新元素:读入一个整数e,和一个插入位置i,在线性表L中第i个元素之前插入新元素e, L长度加1 printf("请输入待插入元素:"); scanf("%d", &e); printf("请输入新元素位置序号:"); scanf("%d", &i); if( ListInsert_sq(L, i, e)) { printf("操作成功,更新后的序列如下:\n"); ListTraverse(L); //遍历顺序表,输出所有元素 } else printf("操作失败\n"); break; case 5: ListTraverse(L); //遍历顺序表,输出所有元素 break; } //结束switch }//结束while return 0; } //返回顺序表L中第1个与e相等的数据元素位序 int LocatElem_sq(SqList &L, ElemType e) { int i; for(i = 1; i <= l.length; i++) 下标从1开始 if(e="=" l.elem[i]) 若找到,返回下标1~l.length return i; 0; 若查找失败,返回0 }>
第7题
A、将n个元素从小到大排序
B、从线性表中删除第i个元素(1≤i≤n)
C、查找第i个元素(1≤i≤n)
D、向线性表的第i个元素之后插入一个元素(0≤i≤n)
第8题
A、A.访问第i个元素和求第i个元素的直接前趋(2≤i≤n)
B、B.在第i(1≤i≤n)个元素后面插入一个新元素
C、C.删除数组第i个元素
D、D.顺序查找与给定值k相等的元素
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!