C 언어-----체인 알고리즘 실현

3158 단어 C 언어
#include <stdio.h>
#include <stdlib.h>

typedef struct Node
{
	int data;
	struct Node * pNext;
}NODE,*PNODE;

PNODE create_list(void);
void traverse_list(PNODE);
bool is_empty(PNODE pHead);

int length_list(PNODE);
bool insert_list(PNODE, int, int);
bool delete_list(PNODE, int, int*); //int *      
void sort_list(PNODE);


int main(void)
{
	PNODE pHead = NULL;
	pHead = create_list();
	traverse_list(pHead);
	//is_empty(pHead);
	//int len = length_list(pHead);
	//printf("    :%d
",len); //sort_list(pHead); //traverse_list(pHead); insert_list(pHead,3,222); traverse_list(pHead); int val; if(delete_list(pHead,2,&val)){ printf(" :%d
",val); } else { printf(" !
"); } traverse_list(pHead); return 0; } PNODE create_list(void) { int len;// int i; int val;// PNODE pHead = (PNODE)malloc(sizeof(NODE)); if(NULL == pHead) { printf(" , !
"); exit(-1); } // PNODE pTail = pHead; pTail->pNext = NULL; printf(" :len = "); scanf("%d",&len); for(i=0; i<len; ++i) { printf(" %d : ",i+1); scanf("%d",&val); PNODE pNew = (PNODE)malloc(sizeof(NODE)); if(NULL == pNew) { printf(" , !
"); exit(-1); } pNew->data = val; pTail->pNext = pNew; pNew->pNext = NULL; pTail = pNew; // } return pHead; } void traverse_list(PNODE pHead) { PNODE p = pHead->pNext; printf(" :"); while(NULL != p) { printf("%d ",p->data); p = p->pNext; } printf("
"); } bool is_empty(PNODE pHead) { if(NULL == pHead->pNext) { printf(" !
"); return true; } else { printf(" !
"); return false; } } int length_list(PNODE pHead) { PNODE p = pHead->pNext; int len = 0; while(NULL != p) { len++; p = p->pNext; } return len; } void sort_list(PNODE pHead) { int i,j,t; int len = length_list(pHead); PNODE p,q; for(i=0, p=pHead->pNext; i<len-1; i++,p=p->pNext) { for(j=i+1,q=p->pNext; j<len; j++)//q=p->pNext { if(p->data > q->data) { t = p->data; p->data = q->data; q->data = t; } } } } bool insert_list(PNODE pHead, int pos, int val) { int i = 0; PNODE p = pHead; // <pos-1 while(NULL!=p && i<pos-1) { p = p->pNext; i++; } if(i>pos-1 || NULL==p) { return false; } 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; return true; } bool delete_list(PNODE pHead, int pos, int* pVal) { int i = 0; PNODE p = pHead; PNODE q; // <pos-1 , while(NULL!=p->pNext && i<pos-1) { p = p->pNext; i++; } //pos if(i>pos-1 || NULL==p->pNext) { return false; } q = p->pNext; *pVal = q->data; p->pNext = q->pNext; free(q); return true; }

좋은 웹페이지 즐겨찾기