c语言。不是伸手党 给个思路就可以,就是用单链表表示矩阵转置,比如1234,输出1324,或者12

c语言。不是伸手党 给个思路就可以,就是用单链表表示矩阵转置,比如1234,输出1324,或者123456789输出147258369,就是矩阵中行和列互换,二维数组做我知道很简单,用一维的单链表怎么做,大神给个思路吧,简明一点😄谢谢

限定单链表?用双向链表就简单多了,而且还好理解。
单链表就调整顺序嘛,比如123456789,核心算法是 (n+3)%9 同时添加旗帜数组,执行++操作就好;下面是具体示例:
1 + 3 = 4 4 + 3 = 7 7 + 3 = 10 10 % 9 = 1 1已存在于链表中,++, = 2
2 + 3 = 5 5 + 3 = 8 8 + 3 = 11 11 % 9 = 2 2同上,++, = 3
结果就是147258369追问

谢谢,我的思路和你是差不多的,但是在第一个循环的时候,1节点后面接4,4节点后面接7,然后7节点后面接2的时候就找不到2了,因为链表L已经变了,因为上面的操作等于在删除节点了。。。。。。怎么办,简单一点说吧,就是原来的2号节点找不到了。。

追答

所以说用双向链表简单,指针域定义2(2个方向的后继)或4(加上两个前驱,此时为双向链表)个位置;
单链表要想改变顺序只有用指针标记暂时离开链表的节点,这一点在单链表倒置的实验中就能看出来。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-03-19
有个思路不过似乎比较麻烦,由于是单链表,那就遍历它,将里面的值取出存在另为一个二维数组里,再用冒泡的方法转置这个数组,再遍历这个单链表,一一赋值。
相似回答