데이터 구조 - 단일 체인 시트 의 조작
3290 단어 데이터 구조
① 정형 요소 서열 을 입력 하고 꼬리 삽입 법 으로 머리 결 점 이 있 는 단일 체인 표를 구축한다.
② 이 선형 표 의 역 주 행 을 실현 한다.
③ 이 단일 체인 표 의 i 번 째 요소 앞 에 정 수 를 삽입 합 니 다.
④ 이 단일 체인 표 의 i 번 째 요 소 를 삭제 하고 그 값 은 매개 변 수 를 통 해 되 돌려 줍 니 다.
⑤ 값 에 따라 질서 있 는 단일 체인 표를 만 들 고 그들 을 값 에 따라 질서 있 는 단일 체인 표 로 합 친다.원래 의 저장 공간 을 이용 하도록 요구 하 다.
이것 은 제 데이터 구조 선생님 이 남 긴 실험 숙제 입 니 다. 제출 하기 전에 블 로 그 를 보 내 주세요!
#include
#include
typedef struct LNode{
int data;//
struct LNode *next;//
}LNode,*LinkList;
void InitList(LinkList &L)
{//
L=(LinkList )malloc(sizeof(LNode));
L->data=0;
L->next=NULL;
}
void CreateList(LinkList &L,int n)
{// n
int i,tmp;
LinkList p,q;
printf(" %d , ,
",n);
q=L;
for(i=0;idata=tmp;
p->next=q->next;
q->next=p;
q=p;
}
}
void Output(LinkList L)
{//
LinkList p;
p=L;
while(p->next)
{
p=p->next;
printf("%d ",p->data);
}
printf("
");
}
int ListInsert(LinkList &L,int i,int e)
{//
int cnt;
LinkList p,q;
p=L;
while(p)
{
if(cntnext;
}
else
break;
}
if(!p || cnt > i-1)
return 0;
else
{
q=(LinkList )malloc(sizeof(LNode));
q->data=e;
q->next=p->next;
p->next=q;
}
return 1;
}
int ListDelete(LinkList L,int i,int &e)
{//
LinkList q,p;
int cnt=0;
p=L;
while(p)
{
if(cntnext;
}
else
{
break;
}
}
q=p->next;
e=p->next->data;
p->next=p->next->next;
free(q);
}
void MergeList(LinkList La,LinkList &Lb,LinkList &Lc)
{// ,
LinkList q,p,pa,pb,pc,q_tmp;
pa=La->next;
pb=Lb->next;
pc=Lc=La;
pc->next=NULL;
while(pa&&pb)
{
if(pa->data < pb->data)
{
q=pa;
pa=pa->next;
q->next=pc->next;
pc->next=q;
// pc=pc->next;
}
else if(pa->data == pb->data) //
{
q=pa;
pa=pa->next;
q_tmp=pb;
pb=pb->next;
q->next=pc->next;
pc->next=q;
// pc=pc->next;
free(q_tmp); //
}
else
{
q=pb;
pb=pb->next;
q->next=pc->next;
pc->next=q;
// pc=pc->next;
}
}
while(pa)
{
q=pa;
pa=pa->next;
q->next=pc->next;
pc->next=q;
}
while(pb)
{
q=pb;
pb=pb->next;
q->next=pc->next;
pc->next=q;
}
q_tmp=Lb;
free(q_tmp);
}
int main()
{
int i,n,e;
LinkList L,Lb,Lc;
InitList(L);
printf("
");
scanf("%d",&n);
CreateList(L,n);
printf("
");
Output(L);
/*printf("
");
scanf("%d%d",&i,&e);
if(ListInsert(L,i,e))
{
printf("Insert is successed
");
Output(L);
}
else
{
printf("Insert is fail
");
}*/
/*printf("
");
scanf("%d",&i);
ListDelete(L,i,e);
Output(L);
printf("e = %d
",e);*/
InitList(Lb);
printf(" Lb
");
scanf("%d",&n);
CreateList(Lb,n);
printf("
");
Output(Lb);
MergeList(L,Lb,Lc);
Output(Lc);
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.