原创:转载请注明出处。
【天勤2-2】删除顺序表L中下标为p(0<=p<=length-1)的元素,成功返回1,不成功返回0,并将删除元素的值赋给e
代码:
//删除顺序表L中下标为p(0<=p<=length-1)的元素, //成功返回1,不成功返回0,并将删除元素的值赋给e #include<stdio.h> #include<cstring> #define MaxSize 200 #define ElemType int #define Status int #define OK 1 #define ERROR 0 using namespace std; typedef struct { ElemType data[MaxSize]; int length; } SqList; //定义结构体 Status initList(SqList *L) { L->length = 0; return 0; }//初始化顺序表 SqList createList(SqList * L, int n) { int startNumber, step; printf("请输入初始值和步长: "); scanf("%d %d", &startNumber, &step); for(int i=0; i<n; i++) { L->data[i] = startNumber + (i)*step; } L->length = n; return *L; }//建造顺序表 void showList(SqList *L) { for(int i=0; i<=L->length-1; i++) { printf("%d ", L->data[i]); } printf(" "); }//屏幕输出顺序表 bool deleteElem(SqList *L, int p, int &e){ if(p > L->length-1)return 0; if(p < 0)return 0; else{ e=L->data[p];//把e赋过去 for(int i=p; i < L->length-1; i++){ L->data[i] = L->data[i+1]; } L->length--; return 1; } } int main() { SqList L; initList(&L); int n; printf("输入顺序表的元素个数: "); scanf("%d",&n); createList(&L,n); showList(&L); printf("输入准备删除元素的下标: "); int p; ElemType e; scanf("%d", &p); deleteElem(&L, p, e); showList(&L); printf("e的值为%d. ", e); return 0; }
结果如下: