데이터 구조 - 단일 체인 시트 의 조작

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; }

좋은 웹페이지 즐겨찾기