| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 333 人关注过本帖
标题:为什么这个程序第一个结点删不掉啊
取消只看楼主 加入收藏
邱超凡
Rank: 1
等 级:新手上路
帖 子:5
专家分:7
注 册:2013-3-22
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
为什么这个程序第一个结点删不掉啊
#include<iostream>
#include<string>
using namespace std;
struct student
{
    int num;
    float score;
    char name;
    struct student *next;
};
void del(student *head,int x,int n)
{
     student *p1,*p2;
     p1=head->next;
     p2=head;
     int i;
     if(head->num==x)
     {
         head=p1;
     }
     else
     {
     for(i=1;i<n;i++)
     {
         if(p1->num==x)
             p2->next=p1->next;
         else
         {
             p1=p1->next;
             p2=p2->next;
         }
     }
     }
}
int main()
{
    student *p1,*p2,*head,a;
    head=p2=p1=&a;
    cin>>a.name>>a.num>>a.score;
    int i,n=1,x;
    for(;p1->num!=0;n++)
    {
        if(n==1)
        {
            head=&a;
        }
        else
        {
            p1=new student;
            cin>>p1->name>>p1->num>>p1->score;
            p2->next=p1;
            p2=p1;
        }
    }
        cin>>x;
    del(head,x,n);
    for(i=0;i<n-1;i++)
    {
        if(head->num==0)
        {
            break;
        }
        cout<<head->name<<"  "<<head->num<<"  "<<head->score;
        cout<<endl;
        head=head->next;
    }
    return 0;
}
搜索更多相关主题的帖子: include 
2013-04-08 16:19
邱超凡
Rank: 1
等 级:新手上路
帖 子:5
专家分:7
注 册:2013-3-22
收藏
得分:0 
回复 2楼 peach5460
就是创建一个动态链表,然后再删除节点,可是第一个节点删不掉。。
2013-04-18 17:23
邱超凡
Rank: 1
等 级:新手上路
帖 子:5
专家分:7
注 册:2013-3-22
收藏
得分:0 
回复 2楼 peach5460
p1=head->next;
     p2=head;
     int i;
     if(head->num==x)
     {
         head=p1;
     }
但是这个head不是已经=head->next了么;输出时还是有第一个
2013-04-18 17:24
快速回复:为什么这个程序第一个结点删不掉啊
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017935 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved