玩转链表
来源:互联网 发布:it香港 编辑:程序博客网 时间:2024/06/07 11:22
/*
author:Li Shihua
20:00 Mar.3 2012 All Rights Reserved.
*/
#include <stdio.h>#include <malloc.h>typedef struct node{int number;struct node *next;}PLINKEDLIST,*LPLINKEDLIST;LPLINKEDLIST CreateTail() //尾插法创建链表{LPLINKEDLIST p1=NULL; LPLINKEDLIST p2=NULL;LPLINKEDLIST head=NULL;head = (LPLINKEDLIST)malloc(sizeof(PLINKEDLIST));p1=head;while(scanf("%d",&p1->number)==1){if(p1->number==0) //当输入元素为0时结束创建。break;p2=(LPLINKEDLIST)malloc(sizeof(PLINKEDLIST));p1->next=p2;p1=p1->next;p2=NULL;} p1->next=NULL;return head;}LPLINKEDLIST CreateHead() //头插法创建链表{LPLINKEDLIST p1=NULL; LPLINKEDLIST head=NULL;do{if(head!=NULL){if(head->number==0) //当输入元素为0时结束创建。break;}p1 = (LPLINKEDLIST)malloc(sizeof(PLINKEDLIST));p1->next=head;head = p1;p1=NULL;}while(scanf("%d",&head->number)==1);return head;}void PrintLinkedList(LPLINKEDLIST head) //打印链表中的元素{LPLINKEDLIST p=head;if(p==NULL){printf("链表为空!\n");}while(p!=NULL){printf("%d ",p->number);p=p->next;}printf("\n");}LPLINKEDLIST ConverseLinkedList(LPLINKEDLIST head) //输入为一个单链表,输出为这个链表的逆至。{LPLINKEDLIST p1=head;LPLINKEDLIST p2=NULL;LPLINKEDLIST P3=NULL;if(p1==NULL){printf("链表为空!\n");}p2=p1->next;while(p2!=NULL){P3 = p2->next;p2->next = p1;p1 = p2;p2 = P3;}head->next=NULL;head=p1;return head;}int main(){printf("请输入链表元素:\n");LPLINKEDLIST head1=CreateHead(); PrintLinkedList(head1);LPLINKEDLIST head2=ConverseLinkedList(head1);PrintLinkedList(head2);return 0;}
待续。。。
- 玩转链表
- 玩转链表和指针,才算是精通C语言。
- 计算以指定字体和字号输出指定文字,所需要的size 辅助函数
- 在EmEditor上编译并运行JAVA
- Dimension 类封装单个对象中组件的宽度和高度(精确到整数)
- 查询数据库-类型不匹配
- ThreadLocal封装Connection--事务统一管理
- 玩转链表
- 12-3-3关于sizeof(struct)
- HEX文件格式
- Java 中的“==”和“equals”,以及Integer数据缓存
- 《完全用Linux工作》——转载自清华退学博士
- 会议安排问题 南阳理工
- Android Framebuff 分析
- 3位BCD加法计数器 VDHL设计与实现
- Linux与Windows双系统下的Grub引导管理器安装——boot.ini与menu.lst的例解