2.7 順序表的基本功能實現
阿新 • • 發佈:2022-04-11
#include <stdio.h> #include <stdlib.h> #define MaxSize 10 /* 程式設計實現:利用陣列順序表的形式完成建表、插入、刪除、倒置、排序、輸出等操作 */ typedef struct List{ int data[MaxSize]; int length; }*SeqList; //初始化 void InitList(SeqList& l) { l = (SeqList)malloc(sizeof(List)); if(l!=NULL)l->length = 0; } //建立順序表 void CreateList(SeqList& l, int data[], int length) { InitList(l); int i; for ( i = 0; i < length; i++) { l->data[i] = data[i]; } l->length=length; } bool ElemInsert(SeqList& l, int i, int e) { if (i<1 || i>l->length + 1) return false; if (i > MaxSize) return false; for (int j = l->length; j >= i; j--) { l->data[j] = l->data[j - 1]; } l->data[i - 1] = e; l->length++; return true; } //刪除第i個元素 bool ElemDelete(SeqList& l, int i) { if (l->length == 0) return false; int j; for ( j = i; j< l->length; j++) { l->data[j-1] = l->data[j]; } l->length--; return true; } void reverseList(SeqList& l) { int temp = 0; for (int i = 0; i < l->length/2; i++) { temp =l->data[i] ; l->data[i] = l->data[l->length - i - 1]; l->data[l->length-i-1] = temp; } } void sortList(SeqList& l) { int i, j, k,temp; for ( i = 0; i < l->length-1; i++) { k = i; for (j = i + 1; j < l->length; j++) { if (l->data[k]>l->data[j]) { k = j; } } temp = l->data[i]; l->data[i] = l->data[k]; l->data[k] = temp; } } //輸出 void printList(SeqList l) { for (int i = 0; i < l->length; i++) { printf("%d\t", l->data[i]); } printf("\n"); } int main() { SeqList l; int data[6] = { 1,2,3,4,5,6 }; //建立表 CreateList(l, data, 6); printList(l); //插入元素 ElemInsert(l, 3, 9); printList(l); //刪除元素 ElemDelete(l, 2); printList(l); //倒置表 reverseList(l); printList(l); //排序 sortList(l); printList(l); }