回 帖 发 新 帖 刷新版面

主题:同结构的链表比较怎么实现啊?

要求创建两个链表A,B,输入数据后,要删除相同数据的结点。
现在我遇到的问题是:1.这两个链表建立的时候名字要不要不相同,2.输入数据后又该怎样用一个二重循环来依次比较结点。我想用两个指针应该可以做到,但是具体的代码我无法写出来,尤其是指针的指向,我弄不清楚。请大家帮帮我,帮我实现这一段代码。

回复列表 (共2个回复)

沙发

struct _Node
{
_Node *pNext ;
int node ;
} ;

struct _Node *ChainA, *ChainB ;

struct _Node *PrevA, *PrevB, *pHeadA, *pHeadB ;

for (ChainA = pHeadA ; ChainA ; ChainA = ChainA->pNext)
{
PrevA = NULL ;
PrevB = NULL ;
for (ChainB = pHeadB ; ChainB ; ChainB = ChainB->pNext)
{
if (ChainA->node == ChainB->node)
{
if (PrevA)
  {
     PrevA->pNext = ChainA->pNext ;
   }
else
  {
     pHeadA = ChainA->pNext ;
  }
free (ChainA) ; // if you want to release it
if (PrevB)
  {
     PrevB->pNext = ChainB->pNext ;
  }
else
  {
     pHeadB = ChainB->pNext ;
  }
free (ChainB) ; //if you want to release it
}

//自己想的,不知道能不能通过编译

板凳

听不懂

我来回复

您尚未登录,请登录后再回复。点此登录或注册