데이터 구조 선형 표 의 순서 실현

데이터 구조 선형 표 의 순서 실현
#include 
#include 
#include 

#define MAXSIZE 100  //          

typedef struct sq_list
{
	int ListData[MAXSIZE + 1]; //        
	int len;				   //           
}sq_list;

void Init(sq_list *L)  
{
	L->len = 0;
}

int length(sq_list *L)
{
	return (L->len);
}

void PrintL(sq_list *L)

{
	for (int i = 0; i < L->len; i++)
	{
		printf("%d", L->ListData[i]);
	}
	printf("
"
); } /* 1 */ // int Add(sq_list *L, int data) { if (L->len >= MAXSIZE) { printf("
"
); return 0; } L->ListData[++L->len] = data; return 1; } /* 2 */ // ( ) int insert(sq_list *L, int n, int data) { int i; if (L->len >= MAXSIZE) { printf("
"
); return 0; } if (n < 0 || n>L->len - 1) { printf("
"
); return 0; } for (i = L->len-1; i >= n; i--) { L->ListData[i + 1] = L->ListData[i]; if (i == n) { L->ListData[n] = data; L->len++; } } return 1; } /* 3 */ // void insert_one(sq_list *s, int x) { int begin = 0; int end = s->len - 1; int mid; int tmp; int i; while (begin <= end) { mid = (begin + end) / 2; if (s->ListData[mid] == x) { break; } else if (s->ListData[mid] > x) { end = mid - 1; } else { begin = mid + 1; } } if (s->ListData[mid] == x && mid != s->len - 1) { tmp = s->ListData[mid]; s->ListData[mid] = s->ListData[mid + 1]; s->ListData[mid + 1] = tmp; } // 1 3 5 7 9 6 if (begin > end) { printf("%d %d
"
, begin, end); for (i = s->len; i > end; i--) { s->ListData[i + 1] = s->ListData[i]; } s->ListData[i + 1] = x; s->len++; } } /* 4 */ void insert_sort(sq_list *L) { int tmp, j; for (int i = 0; i < L->len - 1; i++) { tmp = L->ListData[i + 1]; for (j = i + 1; j >= 1 && tmp < L->ListData[j - 1]; j--) { L->ListData[j] = L->ListData[j - 1]; } L->ListData[j] = tmp; } } /* 1 */ int Delete(sq_list* L, int n) { int i; if (L->len == 0) { printf("
"
); return 0; } if (n < 0 || n > L->len - 1) { printf(" , !
"
); return 0; } for (i = n;i<=L->len-1;i++) L->ListData[i] = L->ListData[i + 1]; L->len--; return 1; } /* 2 */ int DelMin(sq_list *L) { int min = L->ListData[0]; int pos = 0; if (L->len == 0) { printf("
"
); return 1; exit(1); } for (int i = 1; i < L->len; i++) { if (L->ListData[i] < min) { pos = i; min = L->ListData[pos]; } } L->ListData[pos] = L->ListData[L->len - 1]; L->len--; return min; } /* 3 */ int DelABSorted(sq_list *L, int a, int b) { int i, j, len; if (L->len == 0) { printf("
"
); return 0; } if (a > b) { printf("a and b error
"
); return 0; } for (i = 0; i < L->len; i++) if (L->ListData[i] > a) break; for (j = 0; j < L->len; j++) if (L->ListData[j] > b) break; len = L->len - (j - i); for (; j < L->len; j++) { L->ListData[i] = L->ListData[j]; i++; } L->len = len; } /* 4 */ int DelABUnSorted(sq_list *L, int a, int b) { int len = L->len; int j = 0; if (L->len == 0) { printf("
"
); return 0; } if (a > b) { printf("a and b error
"
); return 0; } for (int i = 0; i < L->len; i++) { if (L->ListData[i] < a || L->ListData[i] > b) { L->ListData[j++] = L->ListData[i]; }else { len--; } } L->len = len; // L->len = j; return 1; } /* */ int *FindByNum(sq_list *L, int n) { if (n < 0 || n > L->len - 1) { printf("
"
); return 0; } return &(L->ListData[n]); } /* */ void unique_sorted(sq_list *s) { int i; int j = 0; int len = s->len; for (i = 1; i < s->len; i++) { if (s->ListData[j] != s->ListData[i]) { s->ListData[j + 1] = s->ListData[i]; j++; } else { len--; } } s->len = len; } /* L1 L2 L1 L2 L3,L3 ( L1 L2)*/ void merge(sq_list *L1, sq_list *L2,sq_list *L3) { int i = 0; int j = 0; int k = 0; while (i <= L1->len-1 && j <= L2->len-1) // i< len ; // len , i、j 。 i <= L1->len, { if (L2->ListData[j] <= L1->ListData[i]) { L3->ListData[k++] = L2->ListData[j++]; } else { L3->ListData[k++] = L1->ListData[i++]; } } while (i <= L1->len) { L3->ListData[k++] = L1->ListData[i++]; } while (j <= L2->len) { L3->ListData[k++] = L1->ListData[j++]; } L3->len = k - 1; } int main() { sq_list L0 = { {1,2,3,4,5},5 }; printf("%d
"
, L0.len);PrintL(&L0); insert(&L0, 0, 8); printf("%d
"
, L0.len);PrintL(&L0); Delete(&L0, 0); printf("%d
"
, L0.len); PrintL(&L0); sq_list L11 = { {1,3,5,7,4,2},6 }; //insert_sort(&L11); PrintL(&L11); DelABUnSorted(&L11, 3, 7); PrintL(&L11); sq_list s1 = { {3, 2, 21, 3, 9, 5, 2, 7, 5, 9, 9, 2}, 12 }; insert_sort(&s1); PrintL(&s1); unique_sorted(&s1); PrintL(&s1); printf("----------------
"
); sq_list L1 = { {1,3,5,7,9,11,13,15,17,19},10 }; sq_list L2 = { {2,3,4,5,6},5 }; sq_list L3; merge(&L1, &L2, &L3); PrintL(&L3); system("pause"); return 0; }

잘못 이 있 으 면 지적 해 주 십시오. 감사합니다.

좋은 웹페이지 즐겨찾기