藍森林首頁 | 返回主頁 | 本站地圖 | 站內搜索 | 聯繫信箱 |
 您目前的位置:首頁 > 自由軟件 > 技術交流 > 應用編程


    

藍森林 http://www.lslnet.com 2006年6月6日 10:18


如何反方向輸出一個單向鏈表?

今天老師要我們做一個題:

打開一個文件 ,然後反方向輸出到屏幕  
即文件的最後一行作為輸出到屏幕的第一行

我以經做成了一個單向的鏈表,能夠原樣的輸出,但不能反向的輸出

#include <iostream>;
#include <cstdlib>;
#include <fstream>;
using namespace std;
struct linetxt{
    char * linetext;
    linetxt * next;
};
linetxt * pW;   
linetxt * head = NULL;
linetxt * pEnd;

      
int main(){
    ifstream fin("TDate.txt");
    char line[120];
    while(!fin.eof()){
        fin.getline(line,120);      
        pW = new linetxt;
        if(head == NULL)
                head = pW;
        else
                pEnd->;next = pW;
        pEnd = pW;
        pW->;linetext = new char[120];
        strcpy(pW->;linetext,line);
                pW = new linetxt;                                                                                                                                                      
    }
    pEnd->;next = NULL;
    fin.close();
   
    while(head){
        cout<<head->;linetext<<endl;
        cout<<"\t"<<head->;next<<endl;
        head = head->;next;   
    }   
    system("pause");
}



我還是有點不明白,節點中的指針是如何取得下一個節點的地址的

如何反方向輸出一個單向鏈表?

用雙鏈表或棧。

如何反方向輸出一個單向鏈表?

單向鏈表的節點結構由一個數據域與一個指向下一節點的指針域構成。
typedef struct {
      datatype data-field;    //數據域
      nodetype  *pointer;   //指針域,指向下一節點
}nodetype;
要實現它的反向輸出可以設一棧,依次將鏈表數據壓入,最後出棧。

如何反方向輸出一個單向鏈表?

你用stl裡面的數據結構很方便呀。
具體用什麼查一下吧。好像是list吧。 :D

如何反方向輸出一個單向鏈表?

用一個暫存數組,然後用lseek從文件末尾開始,遇到'\n',則輸出,不知道可以不?!(:

如何反方向輸出一個單向鏈表?

呵呵,剛才看了看資料,用stl的vector也可以。
其實還可以用別的,樓主查一下了。

如何反方向輸出一個單向鏈表?

while ( head != NULL)
{
head = head->;next;
continue;
printf (head->;data);
}

這樣就可以實現壓棧。

如何反方向輸出一個單向鏈表?

-->

大哥,你有沒搞錯啊?

如何反方向輸出一個單向鏈表?

呵呵,沒有搞錯。仔細想想。
c 中可以這樣做。
while ( head != NULL)
{
head = head->;next;
data = head->;data;
continue;
printf (data);
}
continue 也是一條語句,執行完它,後面的也要執行。
continue 的實現本身就是對後面可以執行語句的入棧。

如何反方向輸出一個單向鏈表?

-->

如有興趣,你不妨實現一個試試,反正不長。我預言它一個語句也打不出。

如何反方向輸出一個單向鏈表?

只要鏈表沒錯,
我在大2時就試過了。

如何反方向輸出一個單向鏈表?

-->
沒看懂什麼意思。你向哪裡壓棧?
continue語句的含義是什麼?

如何反方向輸出一個單向鏈表?

coutinue 就是跳過後面的語句,執行下一次循環,所以 printf  語句永遠不會執行。該代碼能歷遍該鏈表,但沒有別的功能。

如何反方向輸出一個單向鏈表?

遞歸解決.

如何反方向輸出一個單向鏈表?

如何反方向輸出一個單向鏈表?

用遞歸函數進行輸出就可以實現

如何反方向輸出一個單向鏈表?

不好意思,調錯代碼了。
res (ds *)
{
   if (ds)
       res (ds->;next);

      print (ds->;data);
}

大家看看,還有錯嗎,

如何反方向輸出一個單向鏈表?

-->
你的棧呢?你還得定義自己的字符串棧。
用stl中的list或vector還有別的,很方便的就解決了。
當然如果故意為了學習數據結構這樣做也可以。
也可以自己定義隊列,然後從隊列尾部向前循環讀取。

如何反方向輸出一個單向鏈表?

gcc 已經做好了,我就不需要做了。
它會壓入棧的。

如何反方向輸出一個單向鏈表?

gcc是已經做好了,這樣做?
c/c++做出來東東跟用java做出來的一樣快了



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 藍森林網站 版權所有。 E-mail : webmaster@lslnet.com