링크 ux 학습 총화 (데이터 구조)
10729 단어 linux
Liux 커 널 은 데이터 구조의 지식 을 많이 사용 합 니 다. Liux 는 C 언어 로 작 성 된 것 이지 만 그 안에 많은 내용 이 대상 을 대상 으로 하 는 사상 입 니 다.그래서 데이터 구조의 지식 은 매우 기초 적 이 고 중요 하 다.
데이터 구 조 는 데이터 의 논리 구조 와 저장 구조 와 그 조작 을 말한다.
비 선형 구조 :1. 순차 저장 2. 도형 구조
체인 메모리
순서 저장 구조: (사실 함수 의 반환 값 은 반드시 판단 해 야 합 니 다. 그러면 비교적 완벽 합 니 다. Liux 커 널 의 함 수 는 보통 반환 값 이 있 습 니 다. 일반적인 경우 오류 반환 - 1, 정확 한 것 은 판단 만 한다 면.
0 을 되 돌려 줍 니 다. 그래서 제 가 정의 한 함수 도 이 규칙 에 따라 야 한다 고 생각 합 니 다. 문 구 를 판단 하고 순환 문 뒤에 한 마디 만 있 으 면 {} 을 원 하지 않 는 것 이 좋 습 니 다. Liux 커 널 은 경찰 에 신고 합 니 다.)
#include <stdio.h>
#include <stdlib.h>
#define N 10
typedef int datatype;
typedef struct {
datatype data[N];
int last;
}sqlist;
sqlist * create_sqlist()
{
sqlist *L;
if((L = (sqlist *)malloc(sizeof(sqlist)))<0)
{
printf("malloc error!");
return NULL;
}
L->last = -1;
return L;
}
int insert(sqlist * L,datatype data,int i)
{
int j;
if((L->last >= N-1)||(i < 0)||(i > L->last+1))
return -1;
for(j = L->last+1;j>i;j--)
{
L->data[j-1] = L->data[j];
}
L->last++;
L->data[i] = data;
return 0;
}
int isempty(sqlist *L)
{
return (L->last == -1) ;
}
int delete(sqlist *L,int i)
{
int j;
if((L->last == -1)||(i < 0)||(i > L->last))
return -1;
for(j = i; j<= L->last; j++)
{
L->data[j] = L->data[j+1];
}
L->last--;
L->data[j+1] = 0;
return 0;
}
int show(sqlist * L)
{
int i;
if(L->last ==-1)
{
printf("empty!
");
return -1;
}
for(i = 0;i <= L->last;i++)
{
printf("data[%d] = %d
",i,L->data[i]);
}
return 0;
}
int main(int argc,char * argv[])
{
int i;
int ret;
sqlist * L;
L = create_sqlist();
for(i = 0;i<10;i++)
{
ret = insert(L,i,i);
if(ret == -1)
{
printf("insert error
");
return -1;
}
}
ret = show(L);
if(ret == -1)
printf("show error
");
printf("****************
");
ret = delete(L,4);
if(ret == -1)
printf("delete error
");
ret = show(L);
if(ret == -1)
printf("show error
");
return 0;
}
체인 메모리 구조:
#include
datatype data; struct node * next;}linknode ,*linklist;
linklist create(){ linklist H; if((H = (linklist)malloc(sizeof(linknode)))==NULL) { perror("malloc"); exit(-1); } H->next = NULL; printf("create"); return H;}int lenth(linklist H){ int i = 0; while((H->next)!=NULL) { H = H->next; i++; } return i;}int insert(linklist H,datatype data , int pos){ int i; linklist q; linklist p = NULL; p = H; if((pos<0)||(pos>lenth(H))) { printf("insert error"); return -1; } if((q = (linklist)malloc(sizeof(linknode))) == NULL ) { perror("malloc"); exit(-1); } for(i = 0; i< pos; i++) { p=p->next; } q->data = data; q->next = p->next; p->next = q; return 0;}int delete(linklist H,int pos){ int i; linklist p; p = H; if((pos<0)||(pos>lenth(H))) { printf("delete error"); exit(-1); } for(i = 0;i < pos;i++) H = H->next; p = H->next; H->next = p ->next; free(p); return 0;}int relist(linklist H){ linklist p,q; p = H->next; H ->next = NULL; while(p != NULL) { q = p; p = p->next; q ->next = H->next; H->next = q; }
return 0;}int show(linklist H){ linklist p; p = H; while((p->next)!=NULL) { printf("data =%d",p->data); p=p->next; } return 0;}int main(int argc,char * argv[]){ int i = 0; int ret; linklist H; H = create(); for(i = 0;i < 10;i++) { ret = insert(H,i,i); if(ret ==-1) printf("insert error"); } printf("**********create linklist*************"); ret = show(H); if(ret == -1) printf("show error"); printf("**********delete 3 *********"); ret = delete(H,3); if(ret == -1) printf("delete error"); ret = show(H); printf("*********reservelist ********"); ret = relist(H); if(ret == -1) printf("reservelist error"); show(H); return 0;}
순서 저장 과 체인 저장 의 차이: 1. 논리 적 으로 인접 한 요소 에 순서대로 저장 되 고 그 저장 위치 도 인접 하 다.
2. 데이터 요소 에 대한 접근 을 무 작위 로 저장 하거나 주소 에 따라 접근 합 니 다.
3. 저장 밀도 가 높다
4. 표 의 삽입 과 요소 삭제 시간 이 복잡 하지 않 습 니 다.
5. 삽입 등 조작 연산 시간 이 걸 리 면 요소 의 이동 은 조각 으로 이동 해 야 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
용감한 바로 가기 및 우분투 응용 프로그램안녕하세요 여러분, 이 기사에서는 모든 사이트에서 pwa를 생성하고 실행기 응용 프로그램으로 추가하는 방법을 설명하고 싶습니다. 일부 웹사이트는 PWA로 설치를 허용하지 않지만 유사한 애플리케이션을 원합니다. 1. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.