단일 체인 표 의 실현 (취 합 기능 이 있 음)

2959 단어 데이터 구조
간단명료 한 체인 테이블 의 실현 은 두 개의 체인 테이블 의 집합 을 구 하 는 기능 을 증가 시 켰 다
Code:
#include 
#include 
#include 
typedef struct Node
{
   int data;
   struct Node *pNext;
}Node,*PNode;

PNode create_list(void);
void traverse_list(PNode pHead);
PNode insert_list(PNode pHead,int pos,int val);
PNode delete_list(PNode pHead,int pos);
void hebin_list(PNode pHead1,PNode pHead2);
int main()
{
   PNode pHead1=NULL,pHead2=NULL;
   printf("       :
"); pHead1=create_list(); insert_list(pHead1,3,4); insert_list(pHead1,3,7); delete_list(pHead1,7); traverse_list(pHead1); printf(" :
"); pHead2=create_list(); traverse_list(pHead2); printf(" :
"); hebin_list(pHead1,pHead2); traverse_list(pHead2); return 0; } void hebin_list(PNode pHead1,PNode pHead2){ PNode p=pHead1->pNext; PNode q=pHead2->pNext; PNode s; while(p->pNext!=NULL){ while(q->pNext!=NULL){ if(p->pNext->data==q->pNext->data){ break; }else{ q=q->pNext; } } if(q->pNext==NULL) { s=(PNode)malloc(sizeof(Node)); s->data=p->pNext->data; s->pNext=NULL; q->pNext=s; //p->next=p->next->next; } p=p->pNext; q=pHead2->pNext; } } PNode create_list(void) { int len; int i; int val; PNode pHead=(PNode)malloc(sizeof(Node)); if(NULL==pHead) { printf(" .
"); exit(-1); } PNode p=pHead; p->pNext=NULL; printf(" :len="); scanf("%d",&len); for(i=0;idata=val; p->pNext=pNew; pNew->pNext=NULL; p=pNew; } return pHead; } void traverse_list(PNode pHead) { PNode p=pHead->pNext; while(NULL!=p) { printf("%d ",p->data); p=p->pNext; } printf("
"); return; } PNode insert_list(PNode pHead,int pos,int val) { int i=0; PNode p=pHead; while(p!=NULL&&ipNext; i++; } if(i>pos-1||p==NULL) exit (-1); PNode pNew=(PNode)malloc(sizeof(Node)); if(NULL==pNew) { printf(" !
"); exit(-1); } pNew->data=val; PNode q=p->pNext; p->pNext=pNew; pNew->pNext=q; } PNode delete_list(PNode pHead,int pos) { int i=0; PNode p=pHead; while(p->pNext!=NULL&&ipNext; i++; } if(p->pNext==NULL||i>pos-1) exit (-1); PNode q=p->pNext; p->pNext=p->pNext->pNext; free(q); q=NULL; return ; }

좋은 웹페이지 즐겨찾기