单链表逆序操作-倒插法
2016-11-04 21:02
246 查看
首先我们把链表分成两部分,头结点,其他结点;让头结点的next为NULL;然后剩余部分使用倒插法,一个一个的插入的到头结点中;
#include<stdio.h> #include<stdlib.h> #include<malloc.h> typedef struct LNode{ int data; struct LNode *next; }Node,*LinkList; int creatLinkList(LinkList &L,int n){ LinkList head,temp; L = (LinkList)malloc(sizeof(Node)); if(!L){ printf("malloc atcion error"); return 0; } L->next=NULL; head = L; int j=0; for(;j<n;j++){ temp = (LinkList)malloc(sizeof(Node)); if(!temp){ printf("malloc atcion error"); return 0; } scanf("%d",&temp->data); temp->next = head->next; head->next = temp; head = temp; } return 1; } int printfLinkList(LinkList L){ LinkList head; head = L; head = head->next; while(head!=NULL){ printf("%d ",head->data); head = head->next; } return 1; } //进行链表的倒序 int revserLinkList(LinkList L){ LinkList pMove,temp; pMove = L->next;//1 L->next = NULL;//2 while(pMove!=NULL){ temp = pMove->next;//3 pMove->next=L->next;//4 L->next = pMove;//5 pMove = temp;//6 } return 1; } int main(){ LinkList L; int length; printf("please input the linkList length\n"); scanf("%d",&length); creatLinkList(L,length); printf("reverse the linkList\n"); revserLinkList(L); printfLinkList(L); }
相关文章推荐
- 链表的各种操作实现 链表逆序 链表排序 有序链表归并 链表存在环的判定
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- 【1139】数据结构上机测试2-2:单链表操作B (逆序建表+重复元素删除)
- 给定的单链表逆序操作的递归与非递归算法总结
- 链表操作总结-包括链表合并、插入删除、清空复制、逆序
- C/C++面试之算法系列--典型的几个链表操作-逆序和重排
- 单向链表的基本操作及逆序实现
- 【巩固基础】数据结构——链表的操作:链表的创建和逆序操作
- ZT C语言链表操作(新增单向链表的逆序建立)
- 【数据结构】用C++实现双循环链表的各种操作(包括头删,尾删,插入,逆序,摧毁,清空等等)
- 链表的各种操作实现 链表逆序 链表排序 有序链表归并 链表存在环的判定
- 链表的创建、逆序等操作
- 单链表操作大全(图解逆序)
- 数据结构:链表的基本操作(创建,删除,插入,逆序,摧毁)
- 面试高频题:单链表的逆置操作/链表逆序
- 典型的几个链表操作-逆序和重排
- 单链表操作大全(图解逆序)
- 将链表逆序操作
- C语言实现链表的创建、增加、删除、查询、逆序、清空等基本操作
- 单向链表的逆序操作