데이터 구조 순환 링크 기본 조작 인 스 턴 스 데모

5225 단어 C 언어 잡문
#include
#include   					//        

/*         */
typedef struct CLinkList		 
{
	int data;							
	struct CLinkList *next;
 } node;
 
 /*****************************************/
 /*                                     */ 
 /*****************************************/
 
 /*       */
void ds_init(node **pNode)
{
	int item;
	node *temp;
	node *target;
	
	printf("      ,  0     
"); while(1) { scanf("%d",&item); fflush(stdin); // , if(item==0) return; if((*pNode)==NULL) {/* */ *pNode=(node*)malloc(sizeof(struct CLinkList)); if(!(*pNode)) exit(0); // (*pNode)->data=item; (*pNode)->next=*pNode; } else { /* next */ for(target=(*pNode);target->next!=(*pNode);target=target->next) ; // , /* */ temp=(node *)malloc(sizeof(struct CLinkList)); // if(!temp) // exit(0); temp->data=item; // temp temp->next=*pNode; // target->next=temp; // } } } /* */ /* : , */ void ds_insert(node **pNode, int i) //i { node *temp; // node *target; node *p; int item; int j=1; printf(" :"); // scanf("%d",&item); if(i==1) { // temp=(node*)malloc(sizeof(struct CLinkList));// if(!temp) // exit(0); temp->data=item; // temp /* */ for(target=(*pNode);target->next!=(*pNode);target=target->next) ; temp->next=(*pNode); // temp target->next=temp; // temp, temp *pNode=temp; // , temp } else { target=*pNode; // target for(;jnext; } temp=(node *)malloc(sizeof(struct CLinkList)); if(!temp) exit(0); temp->data=item; // temp p=target->next; // p target->next=temp; // temp temp->next=p; // p, temp } } /* */ void ds_delete(node **pNode,int i) //i { node *target; node *temp; int j=1; if(i==1) { // /* */ for(target=*pNode;target->next!=*pNode;target=target->next) ; temp=*pNode; // , temp *pNode=(*pNode)->next; // , target->next=*pNode; // free(temp); // , } else { target=*pNode; //target for(;jnext; temp=target->next; //temp target->next=temp->next; // target , free(temp); // temp, } } /* */ int ds_search(node *pNode,int elem) //elem { node *target; int i=1; for(target=pNode;target->data!=elem&&target->next!=pNode;++i) target=target->next; // target , , elem , ,i if(target->next==pNode) // , 0, , i return 0; else return i; } /* */ void ds_traverse(node *pNode) { node *temp; temp=pNode; //temp printf("********** ********"); do { printf("%4d",temp->data); // } while((temp=temp->next)!=pNode); // temp printf("
"); } int main() { node *pHead=NULL; char opp; int find; printf("1.

2.

3.

4.

5.

0.

"); while(opp!='0') { scanf("%c",&opp); switch(opp) { case'1': ds_init(&pHead); printf("
"); ds_traverse(pHead); break; case'2': printf(" :"); scanf("%d",&find); ds_insert(&pHead,find); printf(" %d :
",find); ds_traverse(pHead); printf("
"); break; case'3': printf(" :"); scanf("%d",&find); ds_delete(&pHead,find); printf(" %d :",find); ds_traverse(pHead); printf("
"); break; case'4': printf(" :"); scanf("%d",&find); printf(" %d :%d
",find,ds_search(pHead,find)); printf("
"); break; case'5': ds_traverse(pHead); printf("
"); break; case'0': exit(0); } } return 0; }

   초보 자가 방금 입문 한 데이터 구 조 는 오전 에 알 고 인식 하 며 순환 링크 를 이해 했다. 알 겠 지만 어 쩔 수 없 이 작은 편집 지능 이 유한 하고 시간 이 많이 걸 렸 다. 그러나 시간 은 마음 에 드 는 사람 을 저 버 리 지 않 고 데이터 구조 대문 에서 약간의 문틈 을 짜 냈 다. 독특한 사례 를 보 았 다. 링크 의 초기 화, 삽입, 삭제, 조회, 옮 겨 다 니 는 것 을 보 았 다.많은 이익 을 얻 었 다 고 생각 합 니 다. 여러분 과 공유 하고 싶 습 니 다. 모든 이 해 를 주석 에 넣 었 습 니 다. 여러분 은 코드 를 보면 서 이해 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기