顺序表删除逆置

mac2022-06-30  105

1 #include <stdio.h> 2 #include <stdlib.h> 3 #include "slist.h" 4 5 void showData(PSeqList list) 6 { 7 for (int i = 0; i < list->n; i++) 8 { 9 printf("第 %d 个元素是\t %d\n", i + 1, list->element[i]); 10 } 11 } 12 ///删除最小一个元素并返回值 13 int removeMinAndRetuen(PSeqList list) 14 { 15 int tmpMin = list->element[0], minIndex = 0; 16 int paddingValue = list->element[list->n - 1]; 17 for (int i = 0; i < list->n-1; i++) 18 { 19 if (list->element[minIndex] > list->element[i ]) 20 { 21 tmpMin = list->element[i + 1]; 22 minIndex = i; 23 } 24 } 25 list->element[minIndex] = paddingValue; 26 return tmpMin; 27 } 28 29 int mainRemoveMinAndRetuen(void) 30 { 31 PSeqList list = createNullList_seq(); 32 insert_seq(list, 0, 10); 33 insert_seq(list, 0, 50); 34 insert_seq(list, 0, 80); 35 insert_seq(list, 0, 6); 36 insert_seq(list, 0, 30); 37 insert_seq(list, 0, 20); 38 insert_seq(list, 0, 70); 39 insert_seq(list, 0, 100); 40 insert_seq(list, 0, 60); 41 insert_seq(list, 0, 70); 42 int minValue = removeMinAndRetuen(list); 43 showData(list); 44 45 } 46 47 ///顺序表的反转 48 void reverse(PSeqList list) 49 { 50 int midIndex = list->n / 2; 51 int tmp = 0; 52 int length = list->n; 53 for (int i = 0; i < midIndex; i++) 54 { 55 tmp = list->element[i]; 56 list->element[i] = list->element[length - i - 1]; 57 list->element[length - i - 1] = tmp; 58 } 59 } 60 61 int mainReverse(void) 62 { 63 PSeqList list = createNullList_seq(); 64 insert_seq(list, 0, 10); 65 insert_seq(list, 0, 50); 66 insert_seq(list, 0, 80); 67 insert_seq(list, 0, 6); 68 insert_seq(list, 0, 30); 69 insert_seq(list, 0, 20); 70 insert_seq(list, 0, 70); 71 insert_seq(list, 0, 100); 72 insert_seq(list, 0, 60); 73 insert_seq(list, 0, 70); 74 insert_seq(list, 0, 1000); 75 reverse(list); 76 showData(list); 77 78 79 80 } 81 ///删除相同值 82 void removeIdentical(PSeqList list, DataType removeValue) 83 { 84 int total_i = 0; 85 for (int i = 0; i < list->n; i++) 86 { 87 if (list->element[i] != removeValue) 88 { 89 list->element[total_i] = list->element[i]; 90 total_i++; 91 } 92 93 } 94 list->n = total_i; 95 } 96 97 //删除s -- t 之间的值 98 void removeValue_s_t(PSeqList list, int s, int t) 99 { 100 int total_i = 0; 101 for (int i = 0; i < list->n; i++) 102 { 103 if (list->element[i] > s && list->element[i] < t) 104 { 105 total_i++; 106 } 107 else 108 { 109 list->element[i -total_i] = list->element[i]; 110 } 111 112 } 113 list->n -= total_i; 114 } 115 116 int mainRemoveIdentical(void) 117 { 118 PSeqList list = createNullList_seq(); 119 insert_seq(list, 0, 10); 120 insert_seq(list, 0, 50); 121 insert_seq(list, 0, 80); 122 insert_seq(list, 0, 6); 123 insert_seq(list, 0, 30); 124 insert_seq(list, 0, 20); 125 insert_seq(list, 0, 70); 126 insert_seq(list, 0, 100); 127 insert_seq(list, 0, 60); 128 insert_seq(list, 0, 70); 129 insert_seq(list, 0, 1000); 130 removeIdentical(list,70); 131 showData(list); 132 } 133 int mainRemoveValue_s_t(void) 134 { 135 PSeqList list = createNullList_seq(); 136 insert_seq(list, 0, 10); 137 insert_seq(list, 0, 50); 138 insert_seq(list, 0, 80); 139 insert_seq(list, 0, 6); 140 insert_seq(list, 0, 30); 141 insert_seq(list, 0, 20); 142 insert_seq(list, 0, 70); 143 insert_seq(list, 0, 100); 144 insert_seq(list, 0, 60); 145 insert_seq(list, 0, 70); 146 insert_seq(list, 0, 1000); 147 removeValue_s_t(list, 0, 60); 148 showData(list); 149 150 151 152 }

 

头文件:

1 #ifndef SLIST_H 2 #define SLIST_H 3 /* 线性表的顺序表示:类型和界面定义*/ 4 5 #define TRUE 1 6 #define FALSE 0 7 #define SPECIAL -1 8 9 10 #define MAXNUM 20 11 12 13 typedef int DataType; 14 15 struct SeqList { 16 int n; 17 DataType element[MAXNUM]; 18 }; 19 20 typedef struct SeqList SeqList, *PSeqList; 21 22 23 PSeqList createNullList_seq(void); 24 25 26 int isNullList_seq(PSeqList palist); 27 28 29 int insert_seq(PSeqList palist, int p, DataType x); 30 31 32 int delete_seq(PSeqList palist, int p); 33 34 35 int locate_seq(PSeqList palist, DataType x); 36 37 DataType retrieve_seq(PSeqList palist, int p); 38 39 #endif View Code

顺序表实现:

1 #include <stdio.h> 2 #include <stdlib.h> 3 4 #include "slist.h" 5 6 PSeqList createNullList_seq(void) { 7 PSeqList palist = (PSeqList)malloc(sizeof(struct SeqList)); 8 if (palist != NULL) 9 palist->n = 0; 10 else 11 printf("Out of space!\n"); 12 return palist; 13 } 14 15 16 int insert_seq(PSeqList palist, int p, DataType x) { 17 int q; 18 if (palist->n == MAXNUM) { 19 printf("Seq-list overflow!\n"); 20 return FALSE; 21 } 22 if (p < 0 || p > palist->n) { 23 printf("Index of seq-list is out of range! \n"); 24 return FALSE; 25 } 26 27 for (q = palist->n - 1; q >= p; q--) 28 palist->element[q + 1] = palist->element[q]; 29 30 palist->element[p] = x; 31 palist->n++; 32 return TRUE; 33 } 34 35 36 int delete_seq(PSeqList palist, int p) { 37 int q; 38 if (p < 0 || p > palist->n - 1) { 39 printf("Index of seq-list is out of range!\n "); 40 return FALSE; 41 } 42 43 for (q = p; q < palist->n - 1; q++) 44 palist->element[q] = palist->element[q + 1]; 45 46 palist->n--; 47 return TRUE; 48 } 49 50 51 int locate_seq(PSeqList palist, DataType x) { 52 int q; 53 for (q = 0; q<palist->n; q++) 54 if (palist->element[q] == x) return q; 55 return -1; 56 } 57 58 DataType retrieve_seq(PSeqList palist, int p) { 59 if (p >= 0 && p < palist->n) 60 return palist->element[p]; 61 62 printf("Index of seq-list is out of range.\n "); 63 return SPECIAL; 64 } 65 66 int isNullList_seq(PSeqList palist) { 67 return palist->n == 0; 68 } View Code

 

转载于:https://www.cnblogs.com/LLWH134/p/8066356.html

相关资源:顺序表逆置
最新回复(0)