单链表的逆置
2013-10-07 23:13
330 查看
#include<stdio.h> #include<malloc.h> typedef int DataType; //数据结构的定义 typedef struct node{ DataType data; struct node *next; }LinkNode,*LinkList; //利用尾插法建立链表 LinkNode *CreateList() { LinkNode *head,*p,*q; //p指针为过度指针,q为申请的新节点 DataType data; int flag=1; head=p=(LinkNode *)malloc(sizeof(LinkNode)); //申请头节点 while(flag){ scanf("%d",&data); if(data > 0){ q=(LinkNode *)malloc(sizeof(LinkNode)); q->data=data; p->next=q; p=q; }else{ flag=0; p->next=NULL; } } return head; } //利用头插法的思想逆置 void ReverseList(LinkList head) { LinkList p,q; p=head->next; head->next=NULL; while(p != NULL){ q=p->next; p->next=head->next; head->next=p; p=q; } } //打印链表 void PrintList(LinkList head) { LinkList q; q=head->next; while(q!=NULL){ printf("%-3d",q->data); q=q->next; } printf("\n"); } int main(int args,int *argv[]) { LinkNode *head; printf("please input the list:\n"); head=CreateList(); printf("print the list:\n"); ReverseList(head); PrintList(head); }
相关文章推荐
- Linux C函数参考手册(PDF版)
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构揭秘一
- C#实现打造气泡屏幕保护效果
- C 语言基础教程(我的C之旅开始了)[三]
- C 语言基础教程(我的C之旅开始了)[七]
- C/C++ 宏详细解析
- 用C#生成不重复的随机数的代码
- 在c和c++中实现函数回调
- C数据结构之单链表详细示例分析
- 浅析C/C++中被人误解的SIZEOF
- C 语言基础教程(我的C之旅开始了)[六]
- Java数据结构之简单链表的定义与实现方法示例
- c/c++中变量的声明和定义深入解析
- 浅析c与c++中struct的区别
- 深入详解C编写Windows服务程序的五个步骤
- 深入理解C/C++混合编程
- 深入单链表的快速排序详解
- C 语言基础教程(一)颜色加亮