/*第二周顺序表作业: 请先阅读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 }>
A.n-i
B.n-i+1
C.n-i-1
D.i
A.Insert(L,i,e):插入操作,在线性表 L的第i个元素的前面插入一个元素 e。
B.Get(L,i),取元素操作,返回线性表 L中的第i个元素。
C.Delete(L,i):删除操作,将线性表 L的第i个元素删除。
D.Locate(L,x):定位操作,给定值 x,判断线性表中是否有和 x相同的元素。
为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!