왕도 데이터 구조 (링크)
typdef struct Node{
ElemType data;
struct Node *next;
}Node,*LinkList;
1. 앞장 서지 않 는 점 을 삭제 하 는 싱글 체인 시트 의 중간 값 이 x 인 점 을 재 귀적 으로 사용 합 니 다.
void delX(LinkList &L,ElemType x){
Node *p;
if(L==null) return ;
if(L->data==x){
p=L;
L=L->next;
free(p);
delX(L,x);
}
else
delX(L->next,x);
}
2. 앞장 서 는 노드 의 단일 링크 에서 x 의 노드 를 삭제 합 니 다.
void delX(LinkList &L,ElemType x){
Node *p=L->next,*pre=L,*q;
while(p!=null){
if(p->data!=x){
pre=p;
p=p->next;
}
else{
q=p;
p=p->next;
pre->next=p;
free(q);
}
}
}
3. 끝 에서 끝까지 역수출 선두 결점 의 단일 체인 표 각 결점 의 값
void reversePrint(LinkList &L){
while(L->next!=null)
reversePrint(L->next);
printf(L->data);
}
4. 선두 노드 의 단일 체인 테이블 에서 최소 값 의 노드 삭제 (유일)
LinkList delMinNode(LinkList &L){
Node *pre=L,*p=pre->next;
Node *minpre=pre,*minp=p;
while(p!=null){
if(p->datadata){
minp=p;
minpre=pre;
}
pre=p;
p=p->next;
}
minpre->next=minp->next;
free(minp);
return L;
}
5. 앞장 서 는 결점 의 단일 체인 시 계 를 그 자리 에서 거꾸로 놓는다. 즉, 공간 복잡 도 는 O1 이다.
Linklist reverse(LinkList L){
Node *p,*r;
p=L->next;
L->next=null;
while(P!=null){
r=p->next;
p->next=L->next;
L->next=p;
p=r;
}
return L;
}
6. 앞장 서 는 결점 의 단일 체인 표 요 소 를 증가 시킨다.
void sort(LinkList &L){
Node *p=L->next,*pre;
Node *r=p->next;
p->next=null;
p=r;
while(p!=null){
r=p->next;
pre=L;
while(pre->next!=null&&pre->next->datadata)
pre=pre->next;
p->next=pre->next;
pre->next=p;
p=r;
}
}
7. 무질서 한 선두 결점 의 단일 체인 테이블 에서 s, t 사이 의 결점 삭제
void rangeDel(LinkList &L,int min,int max){
Node *pr=L,*p=->next;
while(p!=null){
if(p->data>min&&p->datanext=p->next;
free(p);
p=pr->next;
}
else{
pr=p;
p=p->next;
}
}
}
8. 두 개의 단일 체인 시트 의 공공 결산 점 을 찾는다.
LinkList searchSame(LinkList L1,LinkList L2){
int len1=Length(L1),len2=Length(L2);
LinkList longList,shortList;
if(len1>len2){
longList=L1->next;
shortList=L2->next;
len=le1-len2;
}
else{
longList=L2->next;
shortList=L1->next;
len=le2-len1;
}
while(len--)
longList=longList->next;
while(longList!=null){
if(longList==shortList)
return longList;
else{
longList=longList->next;
shortList=shortList->next;
}
}
return null;
}
9. 선두 결점 을 가 진 단일 체인 표를 지정 하고 head 를 헤드 포인터 로 설정 하 며 증가 순서에 따라 링크 의 각 노드 의 데이터 요 소 를 출력 하고 저장 공간 을 방출 합 니 다 (배열 을 보조 공간 으로 사용 할 수 없습니다)
void min_del(LinkList &head){
while(head->next!=null){
Node *pre=head;
Node *p=pre->next;
while(p->next!=null){
if(p->next->datanext->data)
pre=p;
p=p->next;
}
printf(pre->next->data);
Node *u=pre->next;
pre->next=u->next;
free(u);
}
free(head);
}
10. 선두 결점 을 가 진 단일 체인 표 A 를 두 개의 단일 체인 표 AB 로 분해 하 는데 그 중에서 A 에는 원래 표 의 번호 가 홀수 인 요소 B 에 짝수 요 소 를 포함 하고 상대 적 인 순서 가 변 하지 않 는 다.
LinkList disCreat(LinkList &A){
int i=0;
B=(LinkList)malloc(sizeof(LinkList));
B->next=null;
Node *ra=A,*rb=B; //ra,rb AB
Node *p=A->next;
A->next=null; // A
while(p!=null){
i++;
if(i%2==0){
rb->next=p;
rb=p;
}
else{
ra->next=p;
ra=p;
}
p=p->next;
}
ra->next=null;
rb->next=null;
return B;
}
11. C = {a1, b1, a2,... an, bn} 을 선형 표 로 설정 합 니 다.선두 노드 의 단일 체인 시트 로 저장 하고 A = {a1... an}, B = {b1,... bn} 으로 나 눕 니 다.
LinkList disCreat(LinkList &C){
LinkList A=(LinkList)malloc(sizeof(Node));
LinkList B=(LinkList)malloc(sizeof(Node));
A->next=null;
B->next=null;
Node *p=C->next,*q;
Ndde *ra=A;
while(p!=null){
ra->next=p;
ra=p;
p=p->next;
q=p->next;
p->next=B->next;
B->next=p;
p=q;
}
ra->next=null;
return A,B;
}
12. 질서 있 는 선형 표 에 수치 가 같은 요소 가 존재 한다. 만약 에 저장 방식 이 단일 체인 표 라면 수치 가 같은 요 소 를 제거 하여 표 의 요 소 를 중복 하지 않도록 한다.
void delSame(LinkList &L){
Node *p=L->next,*q;
if(p==null) return ;
while(p->next!=null){
q=p->next;
if(p->data==q->data){
p->next=q->next;
free(q);
}
else
p=p->next;
}
}
13. 요소 값 의 증가 순서에 따라 배 열 된 선형 표 가 두 개 있다 고 가정 하면 모두 단일 체인 표 형식 으로 저장 된다.현 재 는 두 개의 단일 체인 표를 원소 값 의 체감 순서에 따라 배 열 된 단일 체인 표 로 병합 하고 원래 두 개의 단일 체인 표 의 결점 을 이용 하여 귀 합 된 단일 체인 표를 저장 해 야 한다.
void mergeLink(LinkList &A,LinkList &B){
Node *r,*pa=A->next,*pb=B->next;
A->next=null;
while(pa&&pb){
if(pa->data<=pb->data){
r=pa->next;
pa->next=A->next;
A->next=pa;
pa=r;
}
else{
r=pb->next;
pb->next=B->next;
B->next=pb;
pb=r;
}
if(pa)
pb=pa;
while(pb!=null){
r=pb->next;
pb->next=A->next;
A->next=pb;
pb=r;
}
free(pb);
}
14. A 와 B 는 두 개의 단일 체인 표 로 그 요소 가 점점 질서 가 있 고 AB 에서 공공 요소 가 단일 체인 표 C 를 형성 하 며 A, B 의 결점 을 파괴 해 서 는 안 된다.
LinkList findSame(LinkList &A,LinkList &B){
Node *p=A->next,*q=B->next,*r,*s;
LinkList C=(LinkList)malloc(sizeof(Node);
r=C;
while(p!=null&&q!=null){
if(p->datadata)
p=p->next;
else if(p->data>q->data)
q=q->next;
else{
s=(Node)malloc(sizeof(Node));
s->data=p->data;
r->next=s;
r=s;
p=p->next;
q=q->next;
}
}
r->next=null;
}
15. l 링크 A, B 는 각각 두 개의 집합 을 나타 내 는데 그 요소 가 점점 증가 하고 배열 되 며 A ∩ B 를 구하 고 A 링크 에 저장 합 니 다.
LinkList Un(LinkList &A,LinkList &B){
Node *pa=A->next,*pb=B->next,*pc=A,*q;
while(pa&&pb){
if(pa->data==pb->data){
pc->next=pa;
pc=pa;
pa=pa->next;
q=pb;
pb=pb->next;
free(q);
}
else if(pa->datadata){
q=pa;
pa=pa->next;
free(q);
}
else{
q=pb;
pb=pb->next;
free(q);
}
if(pa)
pb=pa;
while(pb){
q=pb;
pb=pb->next;
free(q);
}
pc->next=null;
free(B);
return A;
}
16. 두 정수 서열, A = a1,... am;B=b1...bn;이미 두 개의 링크 에 저장 되 어 B 가 A 의 하위 열 인지 아 닌 지 를 판단 합 니 다.
bool isChild(LinkList &A,LinkList &B){
Node *p=A,*pre=p,*q=B;
if(Linklength(A)data==pb->data){
pa=pa->next;
pb=pb->next;
}
else {
pre=pre->nextx;
p=pre;
q=B;
}
if(q=null)
return true;
else
return false;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.