qq_27626645
幸运的菇凉
采纳率75%
2016-03-09 07:35 阅读 4.2k

在长度大于1的单循环链表中既无头结点也无头指针s为指向某个结点的指针编写算法删除结点*s的前驱结点

如链表中为(1,2,3,4,5),用户输入1,则结果应为(1,2,3,4)。这种情况实现不了,求大神解答

#include
using namespace std;
typedef struct LNode
{
int data;
struct LNode *next;

}LNode,*LinkList;
void begin(LinkList &l)
{
l=new LNode;
l->next=NULL;
}
void Input(LinkList &l,int n)
{
LinkList r=l;
cout<<"请输入数据"< for(int i=0;i {
LinkList p=new LNode;
cin>>p->data;
p->next=l;
r->next=p;
r=p;

}

}
void remove(LinkList &l,LinkList &s)
{
LinkList p=s;
LinkList q;
while(p->next->next!=s)
{
p=p->next;
}
q=p->next;
p->next=s;
free(q);

}
void show(LinkList &l)
{
LinkList r=l->next;
while(r!=l)
{
cout<data<<" ";
r=r->next;
}
cout<<endl;
}
void main()
{
LinkList l,s;
begin(l);
begin(s);
LinkList r=l;

int n,m;


cout<<"请输入数据个数"<<endl;
cin>>n;
Input(l,n);
cout<<"请输入要删除数据的后一个数据"<<endl;
cin>>m;
for(int i=0;i<n;i++){
    if(r->data!=m)
    {
        r=r->next;
    }
    s=r;


}
remove(l,s);
show(l);

}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

1条回答 默认 最新

  • qq_21792169 HeroKern 2016-03-10 02:30

    这个属于算法与数据结构里面的,我这儿有一个算法与数据结构的代码,希望能够找你的答案。http://blog.csdn.net/qq_21792169/article/details/49303037

    点赞 1 评论 复制链接分享

相关推荐