循环结点的前驱删除操作
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);
}
}
}
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);
}
}
}
相关文章推荐
- 链表操作————合并两个链表,并同时删除两链表中的公共元素结点
- C语言实现单链表(带头结点)的基本操作(创建,头插法,尾插法,删除结点,打印链表)
- 关于Map表循环过程删除操作出现的java.util.ConcurrentModificationException 异常
- 单链表的建立(头部延长、尾部延长)、插入操作、删除操作(无头结点的删除、有头结点的删除)
- Partition List(链表的插入和删除操作,找前驱节点)
- 【数据结构】单链表的倒序、删除相同结点、按值排序等简单操作用java实现
- (C语言版)链表(二)——实现单向循环链表创建、插入、删除、释放内存等简单操作
- 删除结点的操作(单链表)
- C语言--单链表创建、求长度、查找前驱结点、删除结点
- (C语言版)链表(四)——实现双向循环链表创建、插入、删除、释放内存等简单操作
- 对C++ STL,list元素的循环删除操作
- c语言数据结构中循环队列操作,包括初始化,创建,清空销毁,增添,删除,求队长,遍历等等
- sql while循环操作 (大数据删除可以用得到) [原创 by lee]
- 链表操作(插入一个结点和删除一个结点)
- HDU 1473 并查集 删除结点操作 建立虚拟根结点
- XML文件操作(查询,添加,修改,删除 结点)
- 循环链表 实现对循环链表的初始化,创建,插入,删除,输出操作
- <php+mysql>PHP脚本对数据库的基本操作,查找,删除,循环输出
- 数据结构之循环链表操作3-(合并,拆分,插入,删除,建立等)
- C语言实现带头结点的链表的创建、查找、插入、删除操作