[问题] 链表反转(自己想的一个解法)

楼主: kdok123 (小天)   2014-09-22 23:21:03
typedef int elemType;
struct node{
elemType data;
node *next;
};
node *test(node *head, int length)//这里传入的head是链表的头指针
{
node *mat = new node[length];
for(int i=0; i<length; i++)
{
mat = head;
if(!head->next)
break;
head= head->next;
mat++;
}
//上面这个for循环是想让new出来的每个指标指向list里各个node的位置
for(int i=0; i<length; i++)
{
if(i==length-1)
{
mat->next = NULL;
break;
}
mat->next =
作者: PoorLoser (废文制造机)   2014-09-22 23:46:00
node[length] 怎么看都不像 pointer array
作者: prismwu   2014-09-22 23:54:00
我猜你mat想宣成pointer array 可是你宣pointer
楼主: kdok123 (小天)   2014-09-23 09:09:00
node[length]不是pointer array,是node array没错!因为不想宣告double pointer所以才这样写这边是想让mat的指标指向对的位置,接着在对他改值
作者: bluesoul (忙死你老爸)   2014-09-23 10:15:00
head是用来作什么呢?mat = head; 这行很奇怪
楼主: kdok123 (小天)   2014-09-23 11:25:00
刚刚加入注释了! head是链表的头指针
作者: PoorLoser (废文制造机)   2014-09-23 11:56:00
你是不是误会什么了, mat = head 不会置换 node[] 基底原本 mat 指向 node[], 你的动作是改成指向 head
楼主: kdok123 (小天)   2014-09-23 15:07:00
恩恩! 我知道不会置换node,我只是想让他指向head并改head的next而已,为什么这样会出错呢?
作者: PoorLoser (废文制造机)   2014-09-23 15:08:00
那你的 head 基底++ 之后会指到什么?不过也不用讨论这个, array 里放的非 pointer 要怎么指
作者: jackylu63 (J)   2014-09-23 16:52:00
我超喜欢用Linux kernel list.h,他是个双向链结X没有反转的问题

Links booklink

Contact Us: admin [ a t ] ucptt.com