c 언어 순환 단일 체인 테이블 실현

//    
Node*InitList()
{
	Node*head=(Node*)malloc(sizeof(Node));
	head->next=NULL;
	head->data=-1;
	return head;
}

데이터 추가
void Add(Node*s)
{
	Node*p=s;
	int n;
	printf("        :");
	scanf("%d",&n);
	printf("   %d   :",n);
	for(int i=1;i<=n;i++)
	{
		Node*q=(Node*)malloc(sizeof(Node));
		scanf("%d",&q->data);
		p->next=q;
		p=q;
	}
	p->next=s;
}

삭제 작업
void Delete(Node*s)
{
	int a;
	printf("          :");
	scanf("%d",&a);
	Node*p=s->next;
	int flag=0;
	Node*q=s;
	while(p!=s)
	{
		if(p->data==a)
		{
			q->next=p->next;
			free(p);
			flag=1;
			break;
		}
		p=p->next;
		q=q->next;	
	}	
}

삽입 조작
void Insert(Node*s)
{
	int a;
	int flag=0;
	Node*q=(Node*)malloc(sizeof(Node));
	printf("          :");
	scanf("%d",&q->data);
	printf("             :");
	scanf("%d",&a);
	Node*p=s->next;
	while(p!=s)
	{
		if(p->data==a)
		{
			q->next=p->next;
			p->next=q;
			flag=1;
			break;
		}
		p=p->next;
	}
	if(flag==1)
	printf("    !");
	else
	printf("    !"); 
} 
//   
/*
void Insert(Node*s)
{
	Node*q=(Node*)malloc(sizeof(Node));
	printf("          :");
	scanf("%d",&q->data);
	q->next=s->next;
	s->next=q;
} */

디 스 플레이 동작
void Display(Node*s)
{
	Node*v=s->next;
	while(v!=s)
	{
		printf("%d->",v->data);
		v=v->next;
	}
}

비우 기 동작
void Empty(Node*s)
{
	Node*p=s->next;
	Node*q=p->next;
	while(p!=s)
	{
		free(p);
		p=q;
		q=q->next;
	}
	free(s);
}

원래 코드 는 다음 과 같 습 니 다 \ # include \ # include typedef struct Node {int data; struct Nodenext;} Node; /NodeInitList () {Nodehead = (Node) malloc (sizeof (Node)); head - > next= NULL; hea- - - > data = - 1; rethead;} void Add (Nodes) {Nodep= s; int n; printf ("몇 데 이 터 를 입력 할 것:"); scanf ("% d", & n); printf ("% d 데 데 데 이 터 를 입력 하 십시오:", n); for (int i = 1; i < = n; i + + +) {Nodeq = (Node) malloc ((Node) (Node (((sisizeof (Node)))) (Node다음 다음 데 데 데 데 이 터 를 초기 초기 초기 초기 화 합 니 시작 시작 합 니 다음 다음 다음 다음 다음 다음 다음 다음 다음 (No); scanf ("% d", & q - > data); p - > next = q; p = q;}p - > next = s;} void Dis(Nodes) {Nodev = s - > next; while (v! = s) {printf ("% d - >", v - > data); v = v - - - > data); v - - - - > next;}}}}} void Empty (Nodes) {Nodep= s - > next; Nodeq = p - > next; whi(p! = s) {free (p = s; p = q = q / q - > next;} / q - - > next;} free (s);} / void Delete (Nodes) {/ / void (Nodes) {int / / / / / / / / void 삭제 (Nodes) {int; printf (삭제 할 데 이 터 를 입력 하 십시오: "삭제 할 데 d", & a); Nodep = s - > next; int flag = 0; Nodeq = s; while (p! = s){if (p - > data = = a) {q - - > next= p - > next = p - > next = p - > next = p - > data = = = a) {q - - > next = p - - > next = p - - > next = p - - > next = p - > next; flag = 1; break;} p = p = p - > next; q = q - - - > next;}} / void 삽입 할 데 이 터 를 입력 하 십시오.}} / void 삽입 할 데 이 터 를 입력 하 십시오.}} / / void 삽입 할 데 이 터 를 입력 하 십시오. ("); scanf ("% d ", & q - - - - > / / q - > data); printf (" 다음 데 이 터 를 삽입 할 데 이 터 를 입력 하 십시오: a); Nodep = s - > next; while (p! = s) {if(p - > dataa) {q - - > next = p - > next = p - > next = q; flag = 1; break;} p = p - - > dataa) {q - - > next = p - - > next = p - - - > next = p - - > next = p - > next = p - - > next = p - - > next = p - > next = p - > next = "삽입 성공!"); else printf ("삽입 실패!");} / / / / / / / / 플러그 / void 삽입 (Nodes) {Nodeq = (Node *) malloc (sizeof (Node)); printf ("삽입 할 데 이 데 이 터 를 입력 하 십시오:"); scanf (% d "% d", & q - next = q;} / int main (){Nodehead = InitList (); Add (head); / / Delete (head); Insert (head); printf ("이 데 이 터 는 다음 과 같 습 니 다"); printf ("); Display (head); Empty (head); printf (" 이 링크 는 비 워 졌 습 니 다! "); return 0;}

좋은 웹페이지 즐겨찾기