단 방향 순환 링크 현지 역 치
결국 인터넷 에서 알고리즘 을 찾 아야 만 이 루어 진 것 같다.
(1) 링크 가 빈 시계 이거 나 하나의 노드 만 있 을 때 이 링크 의 역 치 링크 는 원래 표 와 같다.(2) 링크 가 2 개 이상 의 노드 를 포함 할 때 이 링크 를 첫 번 째 노드 만 포함 하 는 선두 노드 링크 와 머리 가 없 는 노드 를 포함 하 는 링크 로 처리 할 수 있다.그 다음 에 이 무 두 결점 체인 테이블 의 모든 결점 을 체인 테이블 지침 에 따라 이동 한 후에 모든 결점 을 무 두 결점 체인 테이블 에서 순서대로 떼 어 내 고 첫 번 째 결점 으로 선두 결점 체인 테이블 에 삽입한다.이렇게 하면 역 치 된 체인 시 계 를 얻 을 수 있다.
구체 적 으로 는 어렵 지 않 아 요. 종이 위 에 그림 을 그리 면 나 와 요 ~ ~
#include <iostream>
#include <malloc.h>
#define OK 1
#define ERROR 0
#define LENGTH 10
typedef int ElemType;
typedef int Status;
typedef struct LNode
{
ElemType data;
struct LNode* next;
}LNode, *LinkList;
//
Status CreateList(LinkList &L)
{
LinkList s = NULL;
int i = 0;
L = (LinkList)malloc(sizeof(LNode) * LENGTH);
L->next = NULL;
L->data = 0;
for (i = 1; i <= LENGTH; i++)
{
s = (LinkList)malloc(sizeof(LNode));
s->data = 10 - i + 1;
s->next = L->next;
L->next = s;
}
return OK;
}
//
Status InverseList(LinkList &L)
{
LinkList p = NULL;
LinkList q = NULL;
// L
if (L && L->next )//
{
//
p = L->next;
q = p->next;
p->next = NULL;
}
//
while (q)
{
p = q;
q = q->next;
p->next = L->next;
L->next = p;
}
return OK;
}
//
Status PrintfList(LinkList L)
{
int i = 0;
if (L == NULL)
std::cout<<" "<<std::endl;
while(L->next != NULL)
{
std::cout<<" "<<i<<" :"<<L->data<<std::endl;
L = L->next;
i++;
}
std::cout<<" "<<i<<" :"<<L->data<<std::endl;
std::cout<<std::endl;
return OK;
}
//
Status DeleteList(LinkList &L)
{
LinkList p = NULL;
while (L->next)
{
p = L->next;
L->next = p->next;
free(p);
}
return OK;
}
int main()
{
LinkList L = NULL;
// , 10
CreateList(L);
//
PrintfList(L);
//
InverseList(L);
//
PrintfList(L);
//
DeleteList(L);
//
PrintfList(L);
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Codility Lesson3】FrogJmpA small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.