단일 체인 시트 생 성, 삽입, 삭제
9093 단어 싱글 체인 리스트창설 - 삽입 - 삭제
#include <stdio.h>
#include <stdlib.h>
//1.
struct node
{
int num;
struct node *next;
};
//
struct node *creat(struct node *head);
void print(struct node *head);
struct node *del(struct node *head,int num);
struct node *insert(struct node *head,int num,int count);
int n = 0; //
int main()
{
int num = 0,count = 0;
struct node *head;
head = NULL; //2.
//
printf("************************ **********************
");
head = creat(head); //
print(head); //
//
printf("************************ **********************
");
printf(" :
");
scanf("%d",&num);
printf("num is %d
",num);
head = del(head,num);
print(head);
//
while(1)
{
printf("************************* *********************
");
printf(" :1---%d:::::",n+1);
scanf("%d",&count);
printf(" :");
scanf("%d",&num);
head = insert(head,num,count);
print(head);
}
return 0;
}
//
struct node *creat(struct node *head)
{
struct node *p1,*p2;
//3. malloc
p1 = p2 = (struct node *)malloc(sizeof(struct node)); //
printf(" 0 , 0 , :p1_addr = %d
",p1);
scanf("%d",&p1->num);
p1->next = NULL;
while(p1->num > 0)
{
if(head == NULL)
head = p1;
else
p2->next = p1;
p2 = p1;
p1 = (struct node *)malloc(sizeof(struct node));
p1->next = NULL;//
n++;
printf(" 0 , 0 , :p%d_addr = %d
",n,p1);
scanf("%d",&p1->num);
}
free(p1);
p1 = NULL;
p2->next = NULL;
printf("
");
return head;
}
//
void print(struct node *head)
{
struct node *tmp;
tmp = head;
printf(" !!!
");
printf(" :%d
",n);
while(tmp != NULL)
{
printf(" :num = %d, :addr = %d
",tmp->num,tmp);
tmp = tmp->next;
}
printf(" !!!
");
}
//
struct node *del(struct node *head,int num)
{
struct node *p1,*p2;
if(head == NULL)
{
printf(" !!!
");
return head;
}
p1 = head;
//
while((num != p1->num) && (p1->next != NULL))
{
p2 = p1; // p1 p2
p1 = p1->next; //p1
}
if(p1->num == num) //
{
if(p1 == head) // p1
head = p1->next;
else
{
p2->next = p1->next; // p1
free(p1);
}
n--; // 1
}
else //
{
printf(" %d
",num);
}
return head;
}
//
struct node *insert(struct node *head,int num,int count)
{
struct node *p0,*p1,*p2;
p1 = (struct node *)malloc(sizeof(struct node));
p1->num = num;
p1->next = NULL;
p0 = head;
p2 = p0->next;
//
if(count == n + 1) //
{
while(p0->next != NULL) //
{
p0 = p0->next;
}
p0->next = p1;
}
else if(count == 1) //
{
p1->next = head;
head = p1;
}
else
{
for(;count > 2;count--)
{
p0 = p0->next;
p2 = p0->next;
}
p1->next = p0->next;
p0->next = p1;
}
n++;
return head;
}
운행 결 과 는 여기에 스티커 를 붙 이지 않 습 니 다. 참고 하 시기 바 랍 니 다. 만약 거기에 잘못 이 있 으 면 가르침 을 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
데이터 구조 상의 연습 (2) 싱글 체인 시트#include "stdafx.h" #include "stdlib.h" #include "malloc.h" #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.