선형 구조 - 링크
데이터 구 조 는 데이터 대상 과 이 대상 에 존재 하 는 인 스 턴 스 와 인 스 턴 스 를 구성 하 는 데이터 요소 간 의 각종 관계 이다.
데이터 구 조 는 ADT (추상 데이터 형식 Abstract Data Type) 의 물리 적 실현 이다.
데이터 구조 (data structure) 는 컴퓨터 에 데 이 터 를 저장 하고 조직 하 는 방식 이다.일반적으로 정 성 스 럽 게 선택 한 데이터 구 조 는 가장 효율 적 인 알고리즘 을 가 져 올 수 있다.
추상: 데이터 형식 을 묘사 하 는 방법 은 구체 적 인 실현 에 의존 하지 않 는 다. 데 이 터 를 저장 하 는 기계 와 상 관 없 이 데이터 저장 의 물리 구조 와 상 관 없 이 조작 을 실현 하 는 알고리즘 과 프로 그래 밍 언어 와 상 관 없 이 데이터 대상 집합 과 관련 조작 집합 만 묘사 하고 '어떻게 하 느 냐' 는 문제 와 관련 되 지 않 는 다.
알고리즘 이란 무엇 인가
무엇이 좋 은 알고리즘 입 니까?
T (n) = Ω (g (n) 는 상수 C > 0, n0 > 0 이 존재 하여 n > = n0 이 있 을 때 T (n) > = C · g (n) 이 있 음 을 나타 낸다.
T(n) = Θ(h (n) 는 T (n) = O (h (n)) 와 T (n) = Ω (h (n) 가 동시에 있 음 을 나타 낸다.
응용 실례
// N { A1, A2, …, AN},
/**************************
* : *
* : *
**************************/
int MaxSubseqSum1(int A[], int N)
{
int ThisSum, MaxSum;
int i, j, k;
// i
for (int i = 0; i < N; i++)
{
// j
for (int j = i; j < N; j++) {
ThisSum = 0; // A[i] A[j]
for (int k = i; k <= j; k++)
ThisSum += A[k];
if (ThisSum > MaxSum) //
MaxSum = ThisSum; //
}
}
return MaxSum;
}
//
int MaxSubseqSum(int A[], int N)
{
int ThisSum, MaxSum;
int i, j, k;
// i
for (int i = 0; i < N; i++)
{
ThisSum = 0; // A[i] A[j]
// j
for (int j = i; j < N; j++) {
ThisSum += A[j]; // i j j-1
if (ThisSum > MaxSum) //
MaxSum = ThisSum; //
}
}
return MaxSum;
}
선형 구조
선형 표 란 무엇 인가
선형 표 의 순서 저장 실현
//
typedef struct LNode *List;
typedef int Position;
typedef int ElementType;
//
struct LNode {
ElementType Data[MAXSIZE];
int Last;
};
struct LNode L;
//
List MakeEmpty()
{
List Ptrl;
Ptrl = (List)malloc(sizeof(struct LNode));
Ptrl->Last = -1;
return Ptrl;
}
//
#define ERROR -1
Position find(int i, ElementType X)
{
Position i = 0;
while (i < L.Last && L.Data[i] != X)
{
i++;
}
if (i > L.Last) return ERROR;
else return i; //
}
//
bool Insert(List L, ElementType X, Position P)
{
//
if (P = MAXSIZE - 1)
{
printf("
");
return false;
}
//
if (P > L->Last || P < 0)
{
printf("
");
return false;
}
for (int i = L->Last; i >= P; i--)
{
// p
L->Data[i + 1] = L->Data[i];
}
L->Data[P] = X; //
L->Last++;
return true;
}
//
bool Delete(List L, ElementType X, Position P)
{
//
//
if (P > L->Last || P < 0)
{
printf("
");
return false;
}
// P
for (int i = P+1; i <= L->Last; i++)
{
L->Data[i-1] = L->Data[i];
}
// - 1;
L->Last--;
return true;
}
/*******************
* *
* *
* *
********************/
//
//
//
//typedef struct LNode* ptrToLNode;
typedef int ElementType;
//
struct LNode {
ElementType Data; //
LNode* Next; //
};
typedef LNode* Position;
typedef LNode* List;
#define ERROR NULL
//
int Length(List Ptr)
{
int j = 0;
while (Ptr)
{
Ptr = Ptr->Next;
j++;
}
return j;
}
//
Position Find(List L, ElementType X)
{
Position p = L; // P L
while (p && p->Data != X)
p = p->Next;
if (p)
return p;
else
return ERROR;
}
//
bool Insert(List L, ElementType X, Position p)
{
Position tem, pre;
// p
for (pre = L; pre && pre->Next != p; pre = pre->Next);
//
if (pre = NULL)
{
printf("
");
return false;
}
else
{
tem = (Position)malloc(sizeof(struct LNode));
tem->Data = X;
tem->Next = p;
pre->Next = tem;
return true;
}
}
//
bool Delete(List L, Position p)
{
Position tmp, pre;
for (pre = NULL; pre && pre->Next != p; pre = pre->Next);
if (pre == NULL || p == NULL) // p L
{
printf("
");
return false;
}
else
{
// p
// p
pre->Next = p->Next;
free(p);
return true;
}
}
광의 표
다 중 링크
다 중 링크 중의 노드 의 포인터 도 메 인 은 여러 개 있 지만 두 개의 포인터 도 메 인 을 포함 하 는 링크 는 반드시 다 중 링크 가 아 닙 니 다. 예 를 들 어 쌍 선 링크 등 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.