珞珈山水BBS电脑网络程序人生 → 单文区文章阅读

单文区文章阅读 [返回]
发信人: awded (没有追求了), 信区: Programm
标  题: Re: 求助:关于C数据结构单连表就地逆置
发信站: 珞珈山水BBS站 (Thu Apr 28 21:37:24 2005), 转信

3个问题:

typedef struct/*定义顺序堆栈*/

  {struct slnode Stack[maxnum];

    int Top;}qstype;

void converse(slnodetype *la)



    slnodetype *p;

    qstype *q;/* 1、此时还未给该指针分配内存呢!谁知道此指针指到什么地方
去了??说不定会让系统出现莫名奇妙的错误哦*/

    q->Top=0;

    if(q->Top>=maxnum-1)

    {printf("\n 堆栈已满\n");}/*2、如果堆栈已满,仍要继续下去吗?这样势必
会让程序当掉*/

    p=la;

    while(p->Next!=NULL)

    {

        q->Stack[q->Top]=p->Next;

        q->Top++;

        p=p->Next;

    }

    p=la;

    while(q->Top>0)

   {

        p->Next=q->Stack[q->Top]; 

        p=p->Next;  

        q->Top--;

    }

    p->Next=NULL; 

    /*3、*la 还是老样子,这样,la 将指向链表中最后一个元素(以前的第一个
元素)那么前N个元素将丢失,造成内存泄漏*/

}

逻辑没有看,应该没有什么逻辑问题吧。


【 在 zhaoxiang (叶绿素) 的大作中提到: 】
: 利用顺序堆栈实现单连表的就地逆置(链式堆栈已经成功的实现)
: 程序设计部分如下 
: typedef struct/*定义顺序堆栈*/
: ...................

--

※ 来源:·珞珈山水BBS站 bbs.whu.edu.cn·[FROM: 222.20.198.*]
[返回单文区目录]

武汉大学BBS 珞珈山水站 All rights reserved.
wForum , 页面执行时间:20.539毫秒