串列為什麼不會換列...?

void mwrite(matrixPointer node){

/* print out the matrix in row major form */

int i ;

matrixPointer temp, head = node->right;

/* matrix dimensions */

printf(" \n numRows = %d, numCols = %d \n",

node->u.entry.row , node->u.entry.col ) ;

printf(" The matrix by row, column, and value: \n\n");

for (i = 0; i < node->u.entry.row; i++) {

/* print out the entries in each row */

for ( temp = head->right ; temp != head ; temp = temp->right)

printf ( " %5d%5d%5d \n", temp->u.entry.row,

temp->u.entry.col, temp->u.entry.value) ;

head= head->u.next;/* next row */

} /* end for */

} /* end mwite( ) */

=============================================

這事實字串列印出稀疏矩陣的function

倒數第三行的 head= head->u.next;/* next row */

應該會讓它換列

可是用2x2矩陣測試卻是第一列的東西印了兩次

改了好幾次還是改不好

不知道怎麼辦

請告訴我怎麼回事跟要怎麼改好嗎

先謝過各位了

Update:

呃 這是十字串列 不是單向串列

他畫了好幾個圈 會把該 列/行 最後一個連到第一個

typedef struct entryNode{

int row;

int col;

int value;

}entryNode;

typedef struct matrixNode{

matrixPointer down;

matrixPointer right;

tagfield tag;

union {

matrixPointer next;

entryNode entry;

}u;

}matrixNode;

Update 2:

是老師指定的...

Update 3:

不過這個不會換列的問題我後來有解決了

問題出在input的地方

只是不想移除問題 因為移除了也沒有點數呀

想說看看有誰回答一下點數就給誰吧

您要不要改用回答呢?

現在已經寫到之前寄信請教的相乘的地方

雖然編譯出來 結果卻整個不正確

問題網址在這邊

http://tw.knowledge.yahoo.com/question/question?qi...

老師指定的這個規格的確建立起來滿麻煩的

我看了一個多月了才看懂寫到這樣

read跟write卡了很久

其實已經遲交了兩週以上@@"

不過總算進入到相乘了

2 Answers

Rating
  • 1 decade ago
    Favorite Answer

    這個 sparse matrix 的規格是你老師指定的嗎?

    不然,不要用這個規格!

    2008-05-30 04:58:27 補充:

    你問題解決了,又邀請,

    而你相關的問題我也有幫到,我就臉皮厚一點,上來回答了。

    這種己經不是 200列以下可以擺平的程式,

    〝一定〞是一邊寫一邊測!

    並且留下舊版!

    不然,會像你目前遇到的問題:Bug 到底在哪裡!

    下次有這種 1000~200列擺不平的 coding,記得:

    1. 邊寫邊測(Unit testing)

    2. 註解一定要夠多!

    加油! ^_^

    2008-05-30 12:10:10 補充:

    我看了一下你的註。

    你沒弄清楚什麼該註,什麼不用!

    只要 indent 好的、30列內的

    {

    }

    不用註!

    printf( ); // 印出

    scanf( ); // 輸入

    這也是一看就知的,不用註!

    要註的是數學、特殊做法、注意事項、函數使用方法!

  • 6 years ago

    到下面的網址看看吧

    ▶▶http://*****

Still have questions? Get your answers by asking now.