데이터 구조 - 순서 표 삽입

2321 단어 데이터 구조
데이터 구조 1 편 - 순서 표
  데이터 구 조 를 복습 하기 시 작 했 을 때 힘 들 었 습 니 다. 기초 가 좋 지 않 고 모 르 는 점 이 많 았 습 니 다. 다행히 인내심 이 좋 은 블 루 친구 (헌화) 가 있 었 습 니 다. 아직 잘 모 르 겠 지만 계속 공부 하면 반드시 먹구름 을 헤 칠 것 이 라 고 믿 습 니 다.
지식 점: malloc 함수 원형: extern void * malloc (unsigned int num bytes)
realloc 함수 원형: extern void * realloc (void * mem address, unsigned int newsize), void * memaddress 는 메모리 크기 를 바 꾸 려 는 포인터 이름 을 표시 합 니 다. 즉, 어떤 포인터 가 가리 키 는 메모리 인지 바 꾸 려 는 것 입 니 다. unsigned int newsize 는 할당 할 새로운 크기 (원래 크기 보다 커 야 함) 를 말 합 니 다.
#define  _CRT_SECURE_NO_WARNINGS
#include 
#include 
#define LISTINCREASE 10
#define N 5


typedef struct
{
int* BASE; //      


int LISTSIZE; //         *4


int LENGTH; //         


//                 。
} LIST;


void INIT_LIST(LIST* list)
{
list->LISTSIZE = 200;
list->BASE = (int*)malloc(sizeof(int) * list->LISTSIZE);
list->LENGTH = 0;
}


/*******
void CREAT(LIST *list, int a[], int n)
{
int i;
for (i = 0; i < n; i++) 
list->BASE[i] = a[i];
list->LENGTH = n;
}
************/


void LISTINSERT(LIST* list, int i, int e)
{
int index;      //         ,             
if (i < 1 || i>list->LENGTH + 1)
return;
if (list->LENGTH > list->LISTSIZE)
{
list->BASE = (int *)realloc(list->BASE, (list->LISTSIZE + LISTINCREASE)*sizeof(int));
if (!list->BASE)
return;
list->LISTSIZE = list->LISTSIZE + LISTINCREASE;


}


for (index = list->LENGTH-1; index >= i - 1; index--)
{
list->BASE[index+1] = list->BASE[index];
}
list->BASE[i-1] = e;
list->LENGTH++;


}


/******
void PRINT(LIST* list)
{
int i;
for (i = 0; i < list->LENGTH; i++) 
printf("%d ", list->BASE[i]);
printf("
"); } ************/ int main() { LIST mylist; //mylist = NULL; LIST mylist LIST*mylist , , , 。 //mylist = (LIST*)malloc(sizeof(LIST)); INIT_LIST(&mylist); for (int i = 0; i < N; i++) { scanf("%d", &mylist.BASE[i]); mylist.LENGTH++; // , LENGTH 0, LENGTH 1 } //CREAT(&mylist, a, 5); LISTINSERT(&mylist, 3, 66); //PRINT(&mylist); for (int i = 0; i < N+1; i++) { printf("%d ", mylist.BASE[i]); } return 0; }

좋은 웹페이지 즐겨찾기