[데이터 구조 - C 언어] > 주어진 정형 배열 에 따라 꼬리 삽입 법 으로 단일 체인 표를 만 들 고 삽입 삭제 등 을 찾 습 니 다.

주어진 정형 배열 에 따라 꼬리 삽입 법 으로 단일 체인 표를 만 들 고 다음 과 같은 작업 을 실현 합 니 다. ① 찾기: 찾 고 싶 은 정 수 를 입력 하고 찾 으 면 첫 번 째 일치 하 는 정수 가 단일 체인 표 에 있 는 위 치 를 표시 하고 존재 하지 않 으 면 알림 정 보 를 표시 합 니 다.② 삭제: 삭제 하고 자 하 는 정수 e 를 입력 하고 존재 하면 단일 링크 에서 첫 번 째 값 이 e 인 요 소 를 삭제 합 니 다.③ 삽입: 위치 i 와 요소 e 를 삽입 하려 면 e 를 입력 하고 i 의 정수 앞 에 삽입 합 니 다 (i 의 합 법성 주의).
알고리즘 소스 코드
#include
#include
#include

typedef struct Node{      //    
	int data;            //       
	struct Node *next;    //        
}LNode,*LinkList;        //2     ,          、       

/*******     n    L,n         values *****/




LinkList Creat_LinkList(int *values)  //      values       
{
       int i,n;
       LinkList  tail,p;   //          
       LinkList head=(LinkList)malloc(sizeof(LNode));  //        
    if (head!=NULL)
      {
        printf("     n=");scanf("%d",&n) ;
        head->next=NULL;
		tail=head;
            for(i=0;i<n;i++)
               {
				    p=(LinkList)malloc(sizeof(LNode));
			    	p->data=values[i];
                      if(p!=NULL){
						  printf(" %d   :%d
"
,i+1,p->data); tail->next=p; tail=p; tail->next=NULL; } else { printf(" !"); exit(0);} } } else { printf(" !"); exit(0);} return head; } void insert_LinkList(LinkList head,int i,int e) // { int j=0; LinkList q=head,s; while(q!=NULL&&j<i-1){ q=q->next; ++j; } if(q==NULL||j>i-1){ printf(" !"); exit(0);} else {s=(LinkList)malloc(sizeof(LNode)); if(s==NULL){ printf(" !"); exit(0);} else {s->next=q->next; q->next=s; s->data=e; } } return; } void traverse_list(LinkList head) // { LinkList p=head->next; printf("
:"
) ; while(NULL!=p) {printf("%d ",p->data); p=p->next; } printf("

"
); return; } int seek_elem(LinkList head) // { int a=0,i=0; LinkList q=head; printf(" a=");scanf("%d",&a); while(q!=NULL&&q->data!=a) { q=q->next; ++i; } if(q==NULL) { printf(" a!"); exit(0); } return i; } void delete_elem(LinkList head) // { int e=0; LinkList r=head,t; printf(" e=");scanf("%d",&e); while(r->next!=NULL&&r->next->data!=e) { r=r->next; } if(r->next==NULL) { printf(" !"); } else { t=r->next->next; free(r->next); r->next=t; } return; } int main(void) { int a=0,n=0,m=0,i=0,e=0; int values[100]; // printf(" values , :");scanf("%d",&n); printf(" :
"
); for(m=0;m<n;m++) scanf("%d",&values[m]); LinkList head=NULL; head=Creat_LinkList(values); traverse_list(head); printf(" :");scanf("%d",&i); printf(" :");scanf("%d",&e); insert_LinkList(head,i,e); traverse_list(head); delete_elem(head); traverse_list(head); a=seek_elem(head); printf(" %d 。",a) ; return 0; }

질문 과 궁금 한 점 이 있 으 시 면 댓 글로 남 겨 주세요.

좋은 웹페이지 즐겨찾기