6 - 4 선두 결점 의 체인 테이블 조작 집합 (20 점)
List MakeEmpty();
Position Find( List L, ElementType X );
bool Insert( List L, ElementType X, Position P );
bool Delete( List L, Position P );
그 중에서 List 구 조 는 다음 과 같다.
typedef struct LNode *PtrToLNode;
struct LNode {
ElementType Data;
PtrToLNode Next;
};
typedef PtrToLNode Position;
typedef PtrToLNode List;
각 조작 함수 의 정의:
List MakeEmpty (): 빈 선형 표를 만 들 고 되 돌려 줍 니 다.
Position Find (List L, Element Type X): 선형 표 의 X 위 치 를 되 돌려 줍 니 다.찾 지 못 하면 ERROR 로 돌아 가기;
bool Insert (List L, Element Type X, Position P): X 를 위치 P 가 가리 키 는 노드 에 삽입 하기 전에 true 로 되 돌려 줍 니 다.인자 P 가 불법 위 치 를 가리 키 면 "잘못된 위치 for Insertion" 을 인쇄 하여 false 로 되 돌려 줍 니 다.
bool Delete (List L, Position P): 위치 P 의 요 소 를 삭제 하고 true 로 되 돌려 줍 니 다.인자 P 가 불법 위 치 를 가리 키 면 "Wrong Position for Deleteion" 을 인쇄 하고 false 로 되 돌려 줍 니 다.심판 테스트 프로그램 샘플:
#include
#include
#define ERROR NULL
typedef enum {false, true} bool;
typedef int ElementType;
typedef struct LNode *PtrToLNode;
struct LNode {
ElementType Data;
PtrToLNode Next;
};
typedef PtrToLNode Position;
typedef PtrToLNode List;
List MakeEmpty();
Position Find( List L, ElementType X );
bool Insert( List L, ElementType X, Position P );
bool Delete( List L, Position P );
int main()
{
List L;
ElementType X;
Position P;
int N;
bool flag;
L = MakeEmpty();
scanf("%d", &N);
while ( N-- ) {
scanf("%d", &X);
flag = Insert(L, X, L->Next);
if ( flag==false ) printf("Wrong Answer
");
}
scanf("%d", &N);
while ( N-- ) {
scanf("%d", &X);
P = Find(L, X);
if ( P == ERROR )
printf("Finding Error: %d is not in.
", X);
else {
flag = Delete(L, P);
printf("%d is found and deleted.
", X);
if ( flag==false )
printf("Wrong Answer.
");
}
}
flag = Insert(L, X, NULL);
if ( flag==false ) printf("Wrong Answer
");
else
printf("%d is inserted as the last element.
", X);
P = (Position)malloc(sizeof(struct LNode));
flag = Insert(L, X, P);
if ( flag==true ) printf("Wrong Answer
");
flag = Delete(L, P);
if ( flag==true ) printf("Wrong Answer
");
for ( P=L->Next; P; P = P->Next ) printf("%d ", P->Data);
return 0;
}
/ * 당신 의 코드 는 여기에 박 힐 것 입 니 다 * /
입력 예시:
6 12 2 4 87 10 2 4 2 12 87 5
출력 예시:
2 is found and deleted. 12 is found and deleted. 87 is found and deleted. Finding Error: 5 is not in. 5 is inserted as the last element. Wrong Position for Insertion Wrong Position for Deletion 10 4 2 5
List MakeEmpty()
{
List head=(List)malloc(sizeof(struct LNode));
head->Data=0;
head->Next=NULL;
return head;
}
Position Find( List L, ElementType X )
{
List existL=L;
while(existL)
{
if(existL->Data==X)
return existL;
existL=existL->Next;
}
return ERROR;
}
bool Insert( List L, ElementType X, Position P )
{
List temp;
List pre;
for(pre=L;pre&&pre->Next!=P;pre=pre->Next);
if(pre!=NULL)
{
temp=(List)malloc(sizeof(struct LNode));
temp->Next=pre->Next;
pre->Next=temp;
temp->Data=X;
return true;
}
else
{
printf("Wrong Position for Insertion
");
return false;
}
}
bool Delete( List L, Position P )
{
List pre;
for(pre=L;pre&&pre->Next!=P;pre=pre->Next);
if(pre==NULL || P==NULL)
{
printf("Wrong Position for Deletion
");
return false;
}
else
{
pre->Next=P->Next;
free(P);
return true;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 두 수의 최대 공약수 구하 기 (세 가지 방법)자바 두 수의 최대 공약수 구하 기 (세 가지 방법) 1. 역법 전에 저도 몰 랐 습 니 다. 인터넷 에서 찾 아 봤 는데 0 과 0 이 아 닌 수의 약 수 는 모두 이 0 이 아 닌 숫자 입 니 다. 결실 2. 전...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.