데이터 구조 싱글 체인 시트 삽입 삭제 작업 (c 언어 구현)

#include "stdlib.h"
#include "stdio.h"


typedef struct LNode{
	int data;
	struct LNode *next;

}LNode,*LinkList;

void Create_List(LinkList &L){
	int data;
	LinkList p,q;
	L=(LinkList)malloc(sizeof(LNode));
	L->next=NULL;

	q=L;
	scanf("%d",&data);
	while(data!=0){
		p=(LinkList)malloc(sizeof(LNode));
		p->data=data;
		p->next=q->next;
		q->next=p;
		q=p;
		scanf("%d",&data);
	}
	q=L;
}

void TranverseList(LinkList L){
	LinkList p;
	p=L->next;
	if(p==NULL){
		printf("null
"); return; } while(p!=NULL){ printf("%d,",p->data); p=p->next; } printf("
"); } void ListDelet(LinkList &L,int delElem){ LinkList p,temp; p=L; int tag=0; while(p->next!=NULL){ if(p->next->data==delElem){ temp=p; tag=1; break; } p=p->next; } if(tag==0){ return ; } if(temp->next->next==NULL&&tag==1){ temp->next=NULL; }else if(tag==1){ temp->next=p->next->next; } } void Insert(LinkList &L,int elem){ LinkList p; LinkList s; p=L; s=(LinkList)malloc(sizeof(LNode)); s->data=elem; s->next=NULL; while(p->next!=NULL){ if(p->next->data==elem) break; if(p->next->data>elem){ s->next=p->next; p->next=s; break; } p=p->next; } if(p->next==NULL&&p->data<elem){ p->next=s; } } int main(){ LinkList L; Create_List(L); printf(" :"); TranverseList(L); Insert(L,4); Insert(L,1); Insert(L,10); Insert(L,3); printf(" 4,1,10,3 :"); TranverseList(L); ListDelet(L,5); ListDelet(L,1); ListDelet(L,10); ListDelet(L,8); printf(" 5,1,10,8 :"); TranverseList(L); Insert(L,4); printf(" 4 :"); TranverseList(L); ListDelet(L,2); printf(" 2 :"); TranverseList(L); return 0; }

좋은 웹페이지 즐겨찾기