- 论坛徽章:
- 0
|
如何实现一个单链表的反转?
原帖由 "converse" 发表:
>;>;return (L + len);
这是对数组的用法。你能保证这些结点在物理地址上是连续分布的吗?
说的是,没考虑到这点
不过思路还是一样的
修改一下
- typedef struct Node{
- ElementType element;
- Node *next;
- }Node;
- Node *ReverseList(Node *List){
- Node *L, *tmp, *p;
- int len, i , j;
-
- len = ListLen(List);//求出单向练表的长度
- L = List;
- tmp = L;
-
- // 节点N指向节点N-1
- for( i = len; i >; 0; i-- ){
- for(j = i -1 ; j >; 0; j-- ){//找i-1节点指针
- tmp = tmp->;next;
- }
- if(i == len){//保存表尾指针
- p = tmp->;next;
- }
- tmp->;next = tmp; // 节点N指向节点N-1
- tmp = L;
- }
- L->;next = NULL;
- return p;
- }
-
复制代码 |
|