#include<stdio.h> #include<stdlib.h> typedef struct link { int num; struct link* next; }LINK; LINK* InitLink(int n) { LINK* head = (LINK*)malloc(sizeof(LINK)); head->next = NULL; return head; } void EnLink(int n, LINK* head) { int num, dir; LINK* pr = NULL ,* p = NULL,newp = NULL; newp = (LINK)malloc(sizeof(LINK)); head->next = newp; newp->num = 1; newp->next = NULL;
for (int i = 2; i <= n; i++)
{
p = head;
scanf("%d %d", &num, &dir);
newp = (LINK*)malloc(sizeof(LINK));
newp->num = i;
while (p->next != NULL)
{
pr = p;
p = p->next;
if (p->num == num)
{
if (dir)
{
pr = p;
if (p->next == NULL)
{
p->next = newp;
newp->next = NULL;
}
else
{
newp->next = pr->next;
p->next = newp;
}
}
else
{
pr->next = newp;
newp->next = p;
}
}
}
}
} void DeleteLink(int m,int n, LINK* head) { LINK* p = NULL; LINK* pr = NULL; int del; for (int i = 0; i < m; i++) { scanf("%d", &del); p = head; while (p->next!=NULL) { pr = p; p = p->next; if (p->num == del) { pr->next = pr->next->next; free(p); break; } } } } int main() { int n,m;//n为总人数 scanf("%d",&n); LINK* head = InitLink(n); EnLink(n, head); scanf("%d", &m); DeleteLink(m,n, head); LINK* p = head; do{ p = p->next; printf("%d ", p->num); } while (p->next != NULL); return 0; }``` #include<stdio.h> #include<stdlib.h> typedef struct link { int num; struct link* next; }LINK; LINK* InitLink(int n) { LINK* head = (LINK*)malloc(sizeof(LINK)); head->next = NULL; return head; } void EnLink(int n, LINK* head) { int num, dir; LINK* pr = NULL ,* p = NULL,newp = NULL; newp = (LINK)malloc(sizeof(LINK)); head->next = newp; newp->num = 1; newp->next = NULL;
for (int i = 2; i <= n; i++)
{
p = head;
scanf("%d %d", &num, &dir);
newp = (LINK*)malloc(sizeof(LINK));
newp->num = i;
while (p->next != NULL)
{
pr = p;
p = p->next;
if (p->num == num)
{
if (dir)
{
pr = p;
if (p->next == NULL)
{
p->next = newp;
newp->next = NULL;
}
else
{
newp->next = pr->next;
p->next = newp;
}
}
else
{
pr->next = newp;
newp->next = p;
}
}
}
}
} void DeleteLink(int m,int n, LINK* head) { LINK* p = NULL; LINK* pr = NULL; int del; for (int i = 0; i < m; i++) { scanf("%d", &del); p = head; while (p->next!=NULL) { pr = p; p = p->next; if (p->num == del) { pr->next = pr->next->next; free(p); break; } } } } int main() { int n,m;//n为总人数 scanf("%d",&n); LINK* head = InitLink(n); EnLink(n, head); scanf("%d", &m); DeleteLink(m,n, head); LINK* p = head; do{ p = p->next; printf("%d ", p->num); } while (p->next != NULL); return 0; }