如果在链表中第i个结点后插入一个值为y的结点,如果i不存在,则把结点插在表尾。如何实现?

如题所述

你确定是第I个节点,而不是某节点的值为I的节点?第I个节点后插值一个节点,这可不是链表的强项。追问

确定的这是老师给的题目

追答

那也容易,只是觉得怪怪的。

追问

怎么做。。

追答

1、new个新节点。
2、求总的节点数。
3、判断总节点数与I的大小。
4、根据判断结果把new的节点加在相应位置。

追问

求过程。。

追答

好吧,我现在写一个。
#include
using namespace std;
struct Node
{
char Data;
Node *next;
};
int main()
{
//1首先创建一个链表
int iCount=1;
Node *Phead,*ps,*ps1;
Phead=new Node;
Phead->Data='A';
Phead->next=NULL;
ps=Phead;
for (int i=1;iData='A'+i;
ps1->next=NULL;
ps->next=ps1;
ps=ps1;
}
//
cout>n;
Node *temp=new Node;
temp->Data='Y';
temp->next=NULL;
if (n==0)
{
ps=Phead;
Phead=temp;
Phead->next=ps;
}
else
{
ps=Phead;
while(ps->next!=NULL)
{
ps1=ps->next;
if (iCount==n)
{
ps->next=temp;
temp->next=ps1;
ischat=false;
break;
}
iCount++;
ps=ps1;
}
if (ischat)
{
ps->next=temp;
}
}
//显示
ps=Phead;
while(ps!=NULL)
{
ps1=ps->next;
coutDatanext;
delete ps;
ps=ps1;
}
cout<<endl;
system("pause");
return 0;
}

温馨提示:答案为网友推荐,仅供参考
相似回答