[问题] 有关链结串行的问题

楼主: 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