데이터 구조 (4) - 선형 표 의 체인 표시 와 실현
12010 단어 데이터 구조
.amyEssaysOneTitle{background-color: #19a97b;padding: 5px;color: white;}
-->
2.3.1 선형 링크
선형 링크 의 체인 저장 구조의 특정한 것 은 임의의 저장 장치 로 선형 표 의 데이터 요 소 를 저장 하 는 것 이다.
노드 포함: 데이터 필드 와 포인터 필드 는 하나의 포인터 필드 만 포함 하 는 선형 링크 라 고도 부 르 고 단일 링크 라 고도 부른다.
단일 체인 테이블 의 주요 조작 코드 는 다음 과 같다.
#include<iostream>
#include<string>
using namespace std;
//
typedef int ElemType;
//
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
// : i
// : L
// : i i
// : e i
// : ERROR , OK
string GetElemByIndex(LinkList L, int i, ElemType &e)
{
// L
// i , e OK, ERROR
LinkList p = L->next;
int j = 1;
while(p && j < i)
{
p = p->next;
j ++;
}
if (!p || j > i)
{
return "ERROR";
}
e = p ->data;
return "OK";
}
// : i e
// : L
// : i i
// : e i
// : OK ,ERROR
string InsertLinkList(LinkList &L, int i, ElemType e)
{
//
LinkList p = L->next;
int j = 1;
// i - 1
while(p && j < i - 1)
{
p = p->next;
j ++;
}
if (!p || j > i - 1)
{
return "ERROR";
}
LinkList s = (LinkList)malloc(sizeof(LNode));
s->data = e;
s->next = p->next;
p->next = s;
return "OK";
}
// : i
// :
// : i i
// : ERROR ,OK
string DelLinkList(LinkList &L, int i)
{
LinkList p = L->next;
int j = 1;
while(p && j < i - 1)
{
p = p->next;
j ++;
}
if (!p || j > i - 1)
{
return "ERROR";
}
LinkList q = p->next;
p->next = q->next;
free(q);
return "OK";
}
// :
// : LinkList &L
// : int n
// :
void CreateLinkList(LinkList &L, int n)
{
//
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
LinkList p;
int i;
for(i = 0; i <= n ; i++)
{
p = (LinkList)malloc(sizeof(LNode));
p->data = i;
p->next = L->next;
L->next = p;
}
}
// :
// :
// :
void Display(LinkList L)
{
LinkList p = L->next;
cout << " :" << endl;
while(p)
{
cout << p->data << " ";
p = p->next;
}
cout << endl;
}
//
void main()
{
//
LinkList L;
// 10
CreateLinkList(L, 10);
//
Display(L);
// i
ElemType e;
string status = GetElemByIndex(L, 12, e);
cout << status << "," << e << endl;
// i e
string insertStatus = InsertLinkList(L, 4, 90);
cout << insertStatus << endl;
Display(L);
// i
string delStatus = DelLinkList(L, 5);
cout << delStatus << endl;
Display(L);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.