您的位置:程序门 -> c/c++ ->



双向循环链表删除节点问题!!高手帮我看看哪出错了!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


双向循环链表删除节点问题!!高手帮我看看哪出错了![已结贴,结贴人:lx317091]
发表于:2007-05-24 19:47:24 楼主
#include <iostream.h>
#include <malloc.h>

typedef   struct   node{
int   num;
struct   node   *next;
struct   node   *prior;
}*linklist;            

int   main(void)
{
linklist   head=null;     //头结点..这是一个不带头节点的链表
linklist   guid=null;     //游标..遍例链表用的.
linklist   temp=null;     //新节点
int   con=0;                     //   节点数
for(int   i=1;i <=10;i++)
{
temp=(linklist)malloc(sizeof(linklist));
con++;
temp-> num=i;
temp-> next=null;
temp-> prior=null;
if(head==null)
{
head=temp;
head-> next=temp;
head-> prior=temp;
guid=temp;
}
else
{
guid-> next=temp;
guid-> prior=temp;
temp-> next=head;
temp-> prior=head;
guid=temp;
}
}

guid=head;
for(int   j=1;j <=con;j++)
{
cout < <guid-> num < <endl;
guid=guid-> next;
}
/*
guid=head;
for(int   k=1;k <=con;k++)
{
guid=head;
head=head-> next;
guid-> next-> prior=guid-> prior;
guid-> prior-> next=guid-> next;
delete   guid;
cout < < "=========== " < <endl;
}
            注释里面出问题..上面的建表..以及打印出来都没有问题..
            如果是被删除的.另外两个指针指向的问题的话..我把它们都指向null
            也没有用..这个问题困扰我几天了..看了好多资料..还是没有弄懂.
            高手们.帮帮小弟吧..刚刚申请号..没有分数..见谅...
*/
return   0;
}
发表于:2007-05-24 19:55:401楼 得分:0
高手们..救命啊..这是个关键问题啊..
发表于:2007-05-24 20:00:112楼 得分:0
救命啊..谁能帮帮我啊...
发表于:2007-05-24 20:24:493楼 得分:0
嘿嘿
发表于:2007-05-24 20:25:444楼 得分:0
你看,平时不留点分,有问题大家都不里你了   :)
发表于:2007-05-24 20:26:105楼 得分:0
大哥..救救我吧...帮我查出问题了..我陪你一起嘿嘿啊..
    今晚再解决不了..我就得换方法了..
发表于:2007-05-24 20:26:296楼 得分:0
我刚刚申请的号...真的没有分...
发表于:2007-05-24 20:28:577楼 得分:0
洗下澡去...望高手们...把小弟从水深火热之中..拉出来...
    只要你们一伸手..我就出来了...
        help!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
          期待....
发表于:2007-05-24 20:38:358楼 得分:0
好拉


#include <malloc.h>

typedef   struct   node{
        int   num;
        struct   node   *next;
        struct   node   *prior;
}*linklist;            

int   main(void)
{
        linklist   head=null;     //头结点..这是一个不带头节点的链表
        linklist   guid=null;     //游标..遍例链表用的.
        linklist   temp=null;     //新节点
        int   con=0;                     //   节点数
        for(int   i=1;i <=10;i++)
        {
                temp=(linklist)malloc(sizeof(node));
                con++;
                temp-> num=i;
                temp-> next=null;
                temp-> prior=null;

                if(head==null)
                {
                        head=temp;
                }
                else
                {
                        guid-> next=temp;
                        temp-> prior=guid;
                     
                }

                  guid=temp;
        }

        guid=head;
        for(int   j=1;j <=con;j++)
        {
                cout < <guid-> num < <endl;
                guid=guid-> next;
        }
       

        guid=head;
        for(int   k=1;k <=con;k++)
        {
                guid=head;
                head=head-> next;

                if   (guid-> next)
                        guid-> next-> prior=guid-> prior;
                if   (guid-> prior)
                        guid-> prior-> next=guid-> next;

                delete   guid;
                cout < < "=========== " < <endl;
        }
        /*
        注释里面出问题..上面的建表..以及打印出来都没有问题..
        如果是被删除的.另外两个指针指向的问题的话..我把它们都指向null
        也没有用..这个问题困扰我几天了..看了好多资料..还是没有弄懂.
        高手们.帮帮小弟吧..刚刚申请号..没有分数..见谅...
        */

        system( "pause ");
        return   0;
}

发表于:2007-05-24 20:38:559楼 得分:20
有分了记得报答偶
发表于:2007-05-24 20:50:3610楼 得分:0
哇赛..你太棒了..
    怎么给分?
      管理那里?
          顺便问下..你是怎么处理的...
if   (guid-> next)  
  guid-> next这个还有返回值的?
发表于:2007-05-24 20:53:1511楼 得分:0
好了..给了..有分一定报答您...
    if   (guid-> next)
        给我讲讲这个吧...
            为什么要这么弄呢?
                那个guid-> next有返回值的?
                    真.假..各代表什么意思?
发表于:2007-05-24 20:59:3212楼 得分:0
不是返回值

if   (guid-> next)     跟   if   (guid-> next   !=   null)     是一样的

如果   guid-> next   是   null   的话

guid-> next-> prior   就等于   null-> prior   了

你的程序会挂
发表于:2007-05-24 21:10:0713楼 得分:0
晕..
    你弄的是..双向不循环的...
      -   -!
发表于:2007-05-24 21:19:0514楼 得分:0
你要循环的   -   -!

改改咯

。。。。。。。。。

int   main(void)
{
        linklist   head=null;     //头结点..这是一个不带头节点的链表
        linklist   guid=null;     //游标..遍例链表用的.
        linklist   temp=null;     //新节点
        int   con=0;                     //   节点数
        for(int   i=1;i <=10;i++)
        {
                temp=(linklist)malloc(sizeof(node));
                con++;
                temp-> num=i;
                temp-> next=null;
                temp-> prior=null;

                if(head==null)
                {
                        head=temp;
                }
                else
                {
                        guid-> next=temp;
                        temp-> prior=guid;
                     
                }

                  guid=temp;
        }

加上

        head-> prior=temp;

        temp-> next=head;
发表于:2007-05-24 21:25:2715楼 得分:0
还有问题吗?保证帮你解决拉


快速检索

最新资讯
热门点击