[問題] 有關鏈結串列的問題

作者: Godfrey0216 (Godfrey)   2015-07-25 17:58:02
哈囉大家好唷,我想問一下大家,如果我現在手上有一筆存在矩陣中
的資料.我想用利用鏈結串列讓資料印出來,分別是正向跟反向
我要怎麼做呢?
#include<stdio.h>
#include<stdlib.h>
#include <iostream>
#include <cmath>
using namespace std ;
int isPrime(int p)
{
int i;
for (i=2;i<=sqrt((double)p);i++)
{
if(p%i==0)
return 0 ;
}
return 1 ;
}
struct _node
{
int data[1024] ;
struct _node *next ;
} ;
typedef struct _node node ;
node *getnode () /* 此函數產生一個新節點 */
{
node *new_node;
node *p;
new_node = (node *) malloc(sizeof(node));
/* malloc 會動態地配置大小為sizeof 的記憶體*/
/* sizeof 會傳回一個型態為node之值*/
if ( new_node == NULL)
{
printf ("記憶體不足");
exit(1);
}
return(p);
}
void freenode (node *p) /* 此函數將節點還給記憶體 */
{
free(p);
}
node *Inverse(node *head)
{
node *p = head, *temp = NULL;
while(p->next != NULL)
{
head = p->next;
p->next = temp;
temp = p;
p = head;
}
p->next = temp;
return head;
}
int main()
{
node *head, *ptr; head = NULL ; ptr = NULL ;
int n , c = 0 ; int m ; int j ; int r ;
char ch; int ans[1027] = {0} ;
cout << "請輸入N值 : " << endl ;
cin >> n ;
for ( int i = 1 ; i <= n ; i++)
{
if( n%i ==0)
{
c++ ;
ans[c] = i ;
cout << "第" << c << "個因數 : " << ans[c] << endl ;
}
}
cout << "因數總個數為 : " << c << "個" << endl ;
cout << "====================================================" << endl;
for( j = 1 ; j <=c ; j++ )
{
if(isPrime(ans[j]))
cout << ans[j] << "為質數" << endl;
else
cout << ans[j] << "不為質數" << endl;
}
cout << "=========================================" << endl;
cout << "請選擇列印因數方法" << endl;
cout << "1) 正向列印出所有因數 " << endl;
cout << "2) 反向列印出所有因數 " << endl;
cout << "3) 離開 " << endl;
while(1){
ch = getchar();
switch(ch){
case '1' :
for( m=1 ; m<c ; m++)
cout << ans[m] << "," ;
break ;
case '2' :
for (int m=c; m>0; m
作者: Feis (永遠睡不著 @@)   2015-07-25 18:17:00
你為什麼要這麼做 ?
作者: Godfrey0216 (Godfrey)   2015-07-25 18:17:00
因為我這樣做阿!!因為我想這樣做阿!!
作者: Feis (永遠睡不著 @@)   2015-07-25 18:31:00
了解~
作者: LPH66 (-6.2598534e+18f)   2015-07-25 18:36:00
(水晶球占卜中)
作者: Frozenmouse (*冰之鼠*)   2015-07-25 18:40:00
我的水晶球裂了T.T
作者: KoenigseggG (地表最速)   2015-07-25 19:38:00
你要怎麼做呢?
作者: Godfrey0216 (Godfrey)   2015-07-25 19:57:00
我的想法是,一直輸出矩陣的資料,把其當成節點來看但是我的想法程式跑不出來~~
作者: Feis (永遠睡不著 @@)   2015-07-25 20:07:00
那你不覺得應該放一下你的程式碼嗎? QQ
作者: huei820504 (huei820504)   2015-07-25 20:13:00
你可以用for按照你想的順序跑?
作者: Godfrey0216 (Godfrey)   2015-07-25 20:18:00
我是很想放阿,但是放了你們會笑死,我雖然有概念但程式碼慘不忍睹!覺得我的輸出跟鏈結一點關係也沒有
作者: cpper (韓立)   2015-07-25 21:09:00
你應該去找一本c/c++資料結構教科書,裡面範例仔細練習過
作者: twitcha101 (twitch)   2015-07-25 21:57:00
你在ch = getchar();的前面 +個getchar();洗\r後面case1 改m<c+1拍謝我放錯焦點了,沒看清楚
作者: Frozenmouse (*冰之鼠*)   2015-07-26 16:48:00
別怕人家笑,有貼出來才好討論XD我在main裡好像沒看到對串列的操作?
作者: Godfrey0216 (Godfrey)   2015-07-26 18:19:00
對阿,就是不知道怎麼連結在一起,把他一個一個輸出
作者: Frozenmouse (*冰之鼠*)   2015-07-26 21:57:00
所以你是想把ans存成串列嗎?因為正反序印好像也有了要能正反序印建議看看雙向鏈結串列,你寫的是單向的
作者: Godfrey0216 (Godfrey)   2015-07-26 22:59:00
yes!我現在的問題是,我書出把他變成,ptr->ans[],是不行的!鏈結串列這邊我真的頭很暈y

Links booklink

Contact Us: admin [ a t ] ucptt.com