단 방향 순환 링크 초기 화 통합
8285 단어 데이터 구조
#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR -1
#define TRUE 1
#define FALSE -1
#define NULL 0
#define OVERFLOW -2
#define ElemType int
#define Status int
typedef int ElemType
typedef int Status
#define LEN sizeof(LNode)
#define MLC (LinkList)malloc(sizeof(LNode))
/*
//
InitList(&L) // L
DestroyList(&L) // L
ClearList(&L) // L
ListEmpty(L) //
ListLength(L) // L
GetElem(L,i,&e) // L i
LocateElem(L,e,compare()) // L e
compare() // , Bool
compareArray() // , Bool
PriorElem(L,cur_e,&prio_e) // L e
NextElem(L,cur_e,&next_e) // L e
ListInsert(&L,i,e) // L i e, Bool
ListDelete(&L,i,e) // L i , e , Bool
ListTraverse(L,visit()) // : L visit()
visit() // visit ,
// , 。
// “ ”
*/
//--------- -----------
//
typedef struct LNode{ //
ElemType data; //
struct LinkListnext; //
}LNode, *LinkList;// struct LNode Lnode, Lnode * LinkList
//
LinkList LinkListInit_Out_Ptr() {
LinkList L = (LinkList)malloc(LEN);
if (L == NULL) //
exit(OVERFLOW);
L->next = L; // next
return L;
}
// 。
Status InitList_CirLink(LinkList *&L) { //
L = (LinkList)malloc(sizeof(LNode));
if (!L) { /* */
exit(OVERFLOW);
}
L->next = L;/* */
return TRUE;
}
//
linklist *Linklist_Connect(LinkList h1, int l1, LinkList h2, int l2){
LinkList p1, p2;
int l = 1;//Counter
LinkList p;//
p1 = h1->next;//h1 Node1
while (l<l1) {
l++;
p1 = p1->next; // 1 rearA
}
p2 = h2->next;//h2 Node1
l = 1;//Reset Counter
while (l<l2) {
l++;
p2 = p2->next; // 2 rearB
}
LinkList p = p1->next;//p1 = p1->next; A
p1->next = (p2->next)->next;
// : 1 2 head , head , 2
p2->next = p; // 2 1 <==> A p2->next
free(p2->next); //
return h1;
}
LinkList CirLinklist_Merge_Guan(LinkList h1, int Len1, LinkList h2,int Len2) {
// ,LinkList h1 1 ,int Len1 1
LinkList p1, p2, rearA, rearB, p; // , , , 1 ,
p1 = h1;// p1 h1, , 。
p2 = h2;// p2 h2
p = h1;//p1 = p1->next; A
p1 = h1->next;//p1 h1's Node1
int l = 1;//Counter
while (l<l1) { // 。
l++;
p1 = p1->next; // 1 rearA
}
p2 = h2->next;//h2's Node1
l = 1;//Reset Counter
while (l<l2) {
l++;
p2 = p2->next; // 2 rearB
}
rearA = p1;
rearB = p2;
// : 1 2 head , head , 2
rearA->next = (rearB->next)->next;
rearB->next = p; // 2 1 <==> A p2->next
free(p2->next); //
return h1;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.