0 부터 C 언어 (9) - 데이터 구 조 를 함께 배 웁 니 다.
1. 데이터 구조의 소개
1. 데이터 구조
2. 데이터 구조의 저장 방식
2. 메모리 의 동적 개척 과 방출
1. 메모리 의 동적 개발
2. 메모리 의 동적 방출
3. 링크 생 성
1. 체인 헤더 의 생 성
4. 링크 의 읽 기와 쓰기
1. 임의의 수량의 노드 만 들 기
2. 링크 의 작성
3. 링크 읽 기
5. 링크 의 삽입
1. 머리 꽂 기
2. 꼬리 삽입 법
6. 링크 의 삭제
1. 데이터 구조의 소개
1. 데이터 구조
상호 간 에 일정한 관 계 를 가 진 데이터 요소 의 집합.데이터 요소 간 의 관 계 를 논리 구조 라 고 한다.흔히 볼 수 있 는 네 가지 기본 논리 구조:
1) 집합: 데이터 요 소 는 같은 집합 에 속 하 는 것 을 제외 하고 다른 관계 가 없다.
2) 선형 구조: 데이터 요소 간 에 일대일 관계 가 존재 한다.전화번호 부
3) 트 리 구조: 데이터 요소 간 에 한 쌍 이상 의 관계 가 존재 한다.디스크 파일 시스템
4) 그물 모양 구조: 데이터 요소 간 에 여러 쌍 의 관계 가 존재 한다.교통 망
2. 데이터 구조의 저장 방식
데이터 요소 간 의 관계 에 따라 순서 저장 구조 와 체인 저장 구조 로 나 눌 수 있다.
순서 저장 구조: 요소 간 의 상대 적 위치 로 데이터 요소 간 의 관 계 를 나타 낸다.저장 주 소 는 연속 적 이다.
체인 식 저장 구조: 데이터 요소 에 다른 데이터 요 소 를 저장 하 는 주소.이 주소 로 데이터 요소 간 의 관 계 를 표시 합 니 다.저장 주 소 는 연속 되 지 않 습 니 다.
2. 메모리 의 동적 개척 과 방출
1. 메모리 의 동적 개발
함수 원형: void * malloc (size t size);
함수 역할: size 바이트 의 메모리 공간 을 분배 하고 분 배 된 메모리 의 지침 을 되 돌려 줍 니 다.
함수 형 삼: sizet. 사용자 정의 형식, unsigned int;
크기 는 할당 할 메모리 공간의 크기 입 니 다.
함수 반환 값: 분 배 된 메모리 공간의 첫 주 소 를 성공 적 으로 되 돌려 주 었 습 니 다.
NULL 을 되 돌려 주지 못 했 습 니 다.
2. 메모리 의 동적 방출
함수 원형: void free (void * block);
함수 역할: 프로그램 동적 으로 신청 한 메모리 공간 을 방출 합 니 다.
프로그램 이 메모리 에 대한 이 용 률 을 높 일 수 있 도록 하 다.
함수 매개 변수: block 은 필요 한 메모리 공간의 첫 번 째 주소 입 니 다.
3. 링크 생 성
습관 적 으로 링크 의 데이터 요 소 를 노드 라 고 부른다.한 노드 가 다음 노드 의 주 소 를 저장 합 니 다.
각 노드 는 데이터 필드, 포인터 필드 로 나 뉜 다.
1. 체인 헤더 의 생 성
#include
#include
int create_link_head();
struct tag
{
int num;
char name[20];
};
struct link
{
struct tag std;
struct link *pnext;
};
struct link *phead;//
struct link *pnew; //
struct link *ptemp;//
int main()
{
create_link_head();
return 0;
}
int create_link_head()
{
phead = (struct link *)malloc(sizeof(struct link));
if(phead == NULL)
{
printf("
");
return -1;
}
printf("
");
phead->pnext = NULL;
return 0;
}
4. 링크 의 읽 기와 쓰기
1. 임의의 수량의 노드 만 들 기
int create_link_node(int n)
{
int i;
ptemp = phead;
for(i=0;ipnext = NULL;
ptemp->pnext = pnew;
ptemp = ptemp->pnext;//ptemp = pnew
}
printf(" %d
",n);
return 0;
}
2. 링크 의 작성
int write_link_data()
{
ptemp = phead->pnext;
while(ptemp != NULL)
{
printf("
");
scanf("%d",&ptemp->std.num);
ptemp = ptemp->pnext;
}
return 0;
}
3. 링크 읽 기
int read_link_data()
{
ptemp = phead->pnext;
while(ptemp != NULL)
{
printf("%d
",ptemp->std.num);
ptemp = ptemp->pnext;
}
return 0;
}
5. 링크 의 삽입
1. 머리 꽂 기
int add1_link()//
{
pnew = (struct link *)malloc(sizeof(struct link));
printf("
");
scanf("%d",&pnew->std.num);
pnew->pnext = phead->pnext;
phead->pnext = pnew;
return 0;
}
Zhong cha fa!!!!!!
2. 꼬리 삽입 법
int add2_link()//
{
pnew = (struct link *)malloc(sizeof(struct link));
printf("
");
scanf("%d",&pnew->std.num);
pnew->pnext = NULL;
ptemp = phead->pnext;
while(ptemp->pnext != NULL)//
{
ptemp = ptemp->pnext;
}
ptemp->pnext = pnew;
return 0;
}
6. 링크 의 삭제
int dele_link()
{
int num;
struct link *pdele;
printf("
");
scanf("%d",&num);
ptemp = phead;
while( ptemp->pnext !=NULL)
{
if(ptemp->pnext->std.num == num)
{
pdele = ptemp->pnext;
ptemp->pnext = ptemp->pnext->pnext;
free(pdele);
printf("
");
return 0;
}
ptemp = ptemp->pnext;
}
printf("
");
return -1;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.