您的位置:首页 > 其它

循环结点的前驱删除操作

2011-12-13 16:53 197 查看
假设有一个循环链表的长度大于1,且表中既无头结点也无头指针。已知p为指向链表中某结点的指针,试编写算法在链表中删除结点p 的前趋结点。

typedefstructNode

{

intiData;

Node* next;

}*ReLinkList,ReNode;





//////////////////////////////////////////////////////////////////////////

// 创建一个循环链表;

ReLinkListCreat(intn)

{

ReLinkListhead = NULL;

ReLinkListp;

ReLinkListr = NULL;

intiTemp = 0;

cout << "根据您传入n的值,来输入n个数字:"<< endl;

for (inti = 0;i<
n;++i)

{

cin >> iTemp;

p = (ReLinkList)malloc(sizeof(ReNode));

p->iData = iTemp;

p->next = head;

if (head == NULL)

{

head = p;

}

else

{

r->next = p;

}

r = p; /////一定要注意此处的r,很关键的。非常容易出错。

}

returnhead;

}



voidDeletePRE(ReLinkList&p)

{

ReLinkListq, r = p;

while(1)

{

r = r->next;

if (r->next->next ==
p)

{

q = r->next;

r->next = p;

free(q);

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐