天勤论坛高分笔记 2016 版,第 27 页,例 2-2。
描述:删除顺序表L中下标为p(1<=p<=length)的元素,成功返回1,否则返回0,并将被删除元素的值赋给e。
c
/* Page 27, Example 2-2. 描述:删除顺序表L中下标为p(1<=p<=length)的元素,成功返回1,否则返回0,并将被删除元素的值赋给e。 */ #include "stdio.h" #define MAXSIZE 50 typedef struct { int data[MAXSIZE]; int length; }Sqlist; void init(Sqlist &sl) { int len = 10; for(int i=1; i<=len; ++i) { sl.data[i] = i*3-2; } sl.length = len; } int delSqlist(Sqlist &sl, int index, int &e) { int len=sl.length; int loc; if(index<1 || index>len) { return 0; } loc=index; e=sl.data[index]; //返回被删除的值应在“删除”(后续元素前移)前进行 while(loc<len) { sl.data[loc]=sl.data[loc+1]; loc++; // 这步不能遗漏 } sl.length=len-1; return 1; } void printSqlist(Sqlist sl) { int len=sl.length; for(int i=1; i<=len; i++){ printf("%d,", sl.data[i]); } printf(";Length: %d\n", sl.length); } int main() { int index; int e; Sqlist sl; init(sl); printf("Index: "); scanf("%d", &index); printSqlist(sl); if(delSqlist(sl, index, e) == 1) { printf("Deleted finish! Deleted value is %d. \n", e); } else { printf("Deleted failed. \n"); } printSqlist(sl); return 0; }
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。