데이터 구조 - 선형 표 코드

선형 표 삽입 및 삭제
#include <stdlib.h>
#include <stdio.h>

#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
//             
#define LIST_INIT_SIZE 100
//            
#define LISTINCREMENT 10
// Status       ,           

typedef int Status;
typedef int ElemType;

typedef struct {
//      
	ElemType *elem;
//    
	int length;
//         
	int listsize;
} SqList;


//       
Status InitList_Sq(SqList &L) {
	L.elem = (ElemType * )malloc(LIST_INIT_SIZE * sizeof(ElemType));
	if(!L.elem) {
		exit(OVERFLOW);
	}
	L.elem[0] = 1;
	L.elem[1] = 2;
	L.elem[2] = 3;
	L.elem[3] = 4;
	L.length = 4;
	L.listsize = LIST_INIT_SIZE;
	return OK;
}

//  
Status ListInsert_Sq(SqList &L, int i, ElemType e) {
	ElemType *newbase,*q,*p;

	if(i < 1 || i > L.length + 1) {
		return ERROR;
	}
	if(L.length >= L.listsize) {
		newbase = (ElemType * )realloc(L.elem,
		                               (L.listsize + LISTINCREMENT) * sizeof(ElemType));
		if(!newbase) {
			exit(OVERFLOW);
		}
		L.elem = newbase;
		L.listsize += LISTINCREMENT;
	}
	q = &(L.elem[i - 1]);
	for(p = &(L.elem[L.length - 1]); p >= q; --p) {
		*(p + 1) = *p;
	}
	*q = e;
	++L.length;
	return OK;
}

//  
Status ListDelete_Sq(SqList &L,int i,ElemType &e) {
	ElemType *q,*p;
	
	if((i < 1) || (i > L.length)) {
		return ERROR;
	}
	p = &(L.elem[i - 1]);
	e = *p;
	q = L.elem + L.length - 1;
	for(++p; p <= q; ++p) {
		*(p - 1) = *p;
	}
	--L.length;
	return OK;
}


//   
int main() {
	int i ;
	int a; 
	SqList L; 
	InitList_Sq(L);
	ListInsert_Sq(L, 1, 0);
	ListDelete_Sq(L , 1 ,a);
	for(i = 0;i < L.length;i++)
		printf("%d\t",L.elem[i]);
	printf("%d\t",a);
	return 0;
}

좋은 웹페이지 즐겨찾기