선형 링크 삽입 및 삭제

코드 기능: 링크 삽입 과 삭제 의 기본 기능 실현
http://www.bnuoj.com/contest/problem_show.php?pid=4101
선형 표 삽입 및 삭제 작업
Input
첫 번 째 줄 은 선형 표 에 있 는 데이터 요소 의 수량 N, 1 < = N < = 10 을 보 여 줍 니 다.두 번 째 줄 은 N 개의 정 수 를 보 여 줍 니 다. a1, a2, a3. aN, 정수 간 에 하나의 빈 칸 으로 분리 하여 선형 으로 표 현 된 데이터 요 소 를 표시 합 니 다.세 번 째 줄 은 두 개의 정수 K, E1, 1 & lt; = K & gt; = N 을 보 여 주 며, 두 번 째 요소 앞 에 값 이 E1 인 데이터 요 소 를 삽입 하 는 것 을 나타 낸다.네 번 째 줄 은 정수 E2 를 보 여 주 며 선형 표 에서 첫 번 째 값 이 E2 인 데이터 요 소 를 삭제 하 는 것 을 나타 낸다 (선형 표 에 반드시 E2 인 데이터 요소 가 존재 한다 고 가정 함).
Output 
한 줄 에 순서대로 출력 하여 삽입 하고 삭제 한 후 선형 표 의 모든 데이터 요 소 를 데이터 요소 간 에 빈 칸 으로 분리 합 니 다.
 Sample Input
8
12 13 21 24 28 30 42 77
5 25
24

Sample Output
12 13 21 25 28 30 42 77

 
 
 
AC 코드:
#include
#include
typedef struct Node
{
	int date;
	struct Node *next;
}Node,*LinkList;
void CreateList(LinkList &pa,int n) //     
{
	LinkList p,q;
	//p=(LinkList)malloc(sizeof(Node));
	p=pa;
	int i,a;
	for(i=0;idate));
		p->next=q;
		q->next=NULL;
		p=q;
	}
}
void print(LinkList &pa,int n)  //      pa    ,n     
{
     int i;
     LinkList p=pa->next;
     printf("%d",p->date);
     for(i=2;i<=n;++i)
     {
		p=p->next;
		printf(" %d",p->date);
     }
     printf("
"); } bool DeleteList(LinkList &pa,int m,int &n) // m { LinkList p=pa,q=NULL; int j=1; while(p&&j<=n) { if(p->next->date==m) { q=p->next; p->next=p->next->next; free(q);n--; //printf("%d#
",n); return true; } j++; p=p->next; } return false; } bool InsertList(LinkList &pa,int k,int E1,int &n) //k ( E1) { LinkList p=pa,s; int j=0; //j=0 while(p->next&&j<=k-1) { if(j==k-1) { s=(LinkList)malloc(sizeof(Node)); s->date=E1; s->next=p->next; p->next=s; n++; return true; } j++; p=p->next; } return false; } int main() { LinkList L,p; //L L=(LinkList)malloc(sizeof(Node)); int N,i,K,E1,E2; while(~scanf("%d",&N)){ CreateList(L,N); scanf("%d%d",&K,&E1); InsertList(L,K,E1,N); scanf("%d",&E2); DeleteList(L,E2,N); print(L,N); } //while(1); return 0; }

좋은 웹페이지 즐겨찾기