用C++实现含头结点的单链表,然后实现单链表的两个结点交换位置

2025-04-23 20:27:19
推荐回答(2个)
回答1:

假设你的节点结构如下:
struct
{ int sno; //节点序号
String data; //节点数据
node *nextnode; //指向下个节点
} ListNode;

下面是实现代码:
swap(ListNode *p,ListNode *q)
{
ListNode *tnode=new ListNode(); //生成一个临时节点.
tnode->sno=p->sno; //保存源节点的内容
tnode->data=p->data;
tnode->nextnode=p->nextnode;
p->sno=q->sno; //把目标节点的内容复制到源节点上
p->data=q->data;
p->nextnode=q->nextnode;
q->sno=tnode->sno; //把保存的临时节点重新存入目标节点实现交换
q->data=tnode->data;
q->nextnode=tnode->nextnode;
}

注:由于是单向链表,所以交换前必须从表头查起,查到源节点和目标节点两者各自的前一个节点,并修改这两个节点的指针批向新的位置,以上只是一个模型. 具体的思路就是修改指针后再按新的指针链更正相应的序号.

回答2:

可爱的孩子,你的构造函数里queue::queue(){ front= new node; front=rear;% 这一行应该是rear = front; front->next=NULL; count=0;} 希望采纳rvz如果还有问题先描述一下5可以追问