C 언어 - 데이터 구조 - 단일 체인 표 의 기본 실현

더 읽 기
typedef int ElementType;

typedef struct LNode{
	ElementType data;
	struct LNode *ptr;
}LNODE,*LINKLIST;



/**
 *@Function:       (     )
 *@params  : 
 *@return  :
 *@note    : 
 */
LINKLIST LinkList_Creat(void)
{
	LNODE *headPtr;  //    
	LNODE *headNode; //    
	
	headPtr=headNode=(LINKLIST)malloc(sizeof(LNODE));
	if(headPtr == NULL || headNode == NULL){
		printf("       !!!
"); return; } headNode->ptr=NULL; headNode->data=0; //printf("headPtr = %p
",headPtr); //printf("headNode = %p
",headNode); //printf("headNode->ptr = %p
",headNode->ptr); //printf("headNode->data = %d
",headNode->data); return headNode; } /** *@Function: -- *@params : *@return : *@note : pos , pos ; * , */ LINKLIST LinkList_Insert(LINKLIST linklist,int pos,ElementType data) { LNODE *temPtr; LNODE *s; int i=0; temPtr = linklist; if(pos > (temPtr->data) + 1){ // printf(" !!!
"); return; } for(i=0;iptr; } //printf("temPtr=%p
",temPtr); if(pos == (linklist->data + 1)){ // , s=(LINKLIST)malloc(sizeof(LNODE)); temPtr->ptr=s; s->data = data; linklist->data++; // +1, s->ptr=NULL; // , //printf("if-malloc_addr=%p
",s); } else{ // s=(LINKLIST)malloc(sizeof(LNODE)); s->ptr=temPtr->ptr; temPtr->ptr=s; s->data=data; linklist->data++; // +1, //printf("el-malloc_addr=%p
",s); } return linklist; } /** *@Function: -- *@params : *@return : *@note : pos , pos ; * , */ bool LinkList_Delete(LINKLIST linklist,int pos) { LNODE *tmp; LNODE *tmp1=NULL; int i; tmp=linklist; if(pos > linklist->data){ printf(" !!!
"); return; } for(i=0;iptr; } if(pos == linklist->data){ free(tmp->ptr); tmp->ptr=NULL; linklist->data--; } else{ tmp1=tmp->ptr; tmp->ptr=tmp1->ptr; linklist->data--; free(tmp1); } return true; } /** *@Function: -- *@params : *@return : *@note : * */ ElementType LinkList_Query(LINKLIST linklist,int pos) { LNODE *tmp; int i; tmp=linklist->ptr; if(pos > linklist->data){ printf(" !!!
"); return; } for(i=1;iptr; } printf("--query-data=%d
",tmp->data); printf("--data-addre=%p

",tmp); return tmp->data; } /** *@Function: *@params : *@return : *@note : */ void printAllDatas(LINKLIST linklist) { int i=0; LNODE *tmep; tmep=linklist->ptr; printf("/*--------------------------*/
"); for(i=0;idata;i++){ printf("data[%d]=%d
",i,tmep->data); printf("addr[%d]=%p
",i,tmep); tmep=tmep->ptr; printf("/*--------------------------*/
"); } printf("length=%d
",linklist->data); } /** *@Function: *@params : *@return : *@note : */ void LinkList_Print2Test(void) { int i; LINKLIST linklist; linklist=LinkList_Creat(); LinkList_Insert(linklist,1,23); LinkList_Insert(linklist,2,25); LinkList_Insert(linklist,3,27); LinkList_Insert(linklist,2,229); LinkList_Insert(linklist,1,213); LinkList_Insert(linklist,2,215); LinkList_Insert(linklist,3,217); LinkList_Insert(linklist,2,219); for(i=1;idata+1;i++){ LinkList_Query(linklist,i); } LinkList_Delete(linklist,8); LinkList_Delete(linklist,9); LinkList_Delete(linklist,1); printAllDatas(linklist); }

좋은 웹페이지 즐겨찾기