社区讨论

链表爆了,蒟蒻求救、、、

P1160队列安排参与者 1已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mi7ciibs
此快照首次捕获于
2025/11/20 19:26
4 个月前
此快照最后确认于
2025/11/20 19:26
4 个月前
查看原帖
CPP


#include<iostream>
#include<cstdlib>
using namespace std;
int n;
struct node
{
	int data;
	node *next,*pre;
};  //双向链表
node *head,*r,*c;

void del(int v)  //删除模块
{
	//node *go=r;
	//node *stay;
	while(r->next!=NULL)
	{
		//stay=go;
		if(r->data==v)  //删除
		{
			r->pre->next=r->next;
			r->next->pre=r->pre;
			free(r);
		}else{
			r=r->next;  // 没找到就继续找
		}
		//go=stay->next;
	}
}

void add(int k,int p,int j)  //加入
{
	//node *m=r;
	//int i=1;
	while(r->next!=NULL)    //判断是否为最后一个节点
	{
		if(r->data==k)
		{
			break;
		}
		r=r->next;
	}
	//if(r==NULL) return;
	//node *c;
	c=new node;     //加入节点
	c->data=j;
	c->next=NULL;
	c->pre=NULL;
	if(p==0)     //判断插入位置
	{
		r->pre->next=c;
		c->pre=r->pre;
		c->next=r;
		r->pre=c;
	}else if(p==1){
		r->next->pre=c;
		c->next=r->next;
		c->pre=r;
		r->next=c;
	}
}

int main()
{
	cin>>n;
	head=new node;
	head->data=1;
	head->next=NULL;
	head->pre=NULL;
	r=head;
	int k,_p;
	for(int i=2;i<=n;i++)
	{
		cin>>k>>_p;
		add(k,_p,i);
		r=head;
	}
	int m;
	cin>>m;
	int v;
	for(int i=1;i<=m;i++)
	{
		cin>>v;
		del(v);
		r=head;
	}
	while(head->next!=NULL)   //遍历链表
	{
		cout<<head->data<<" ";
		head=head->next;
	}
	return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...