插入一个数
2015-07-25 19:14
274 查看
#include<stdio.h> #include<stdlib.h> struct node{ int data; struct node *next; }; int main() { struct node *head,*p,*t,*q; int a,i,n,b; scanf("%d",&n); head=NULL;//头指针初始为空 for(i=1;i<=n;i++) { scanf("%d",&a); p=(struct node *)malloc(sizeof(struct node));//动态申请一个空间,用来存放一个结点,并用临时指针p指向这个结点 p->data=a;//将数据存储到当前结点的data域中 p->next=NULL;//设置当前结点的后继指针指向空,也就是当前结点的下一个结点为空 if(head==NULL) head=p;//如果这是第一个创建的结点,则将头指针指向这个结点 else q->next=p;//如果不是第一个创建的结点,则将上一个结点的后继指针指向当前结点,这里不能加括号 q=p;//指针q也指向当前结点 } scanf("%d",&b); p=NULL;q=NULL; if(head==NULL||head->next==NULL&&head->data>b) { p=(struct node *)malloc (sizeof(struct node)); p->data=b; p->next=head; head=p; } else { t=head; q=head->next; while(q!=NULL) { //进行插数 if(q->data>=b) { p=(struct node *)malloc (sizeof(struct node)); p->data=b; p->next=q; t->next=p; break;//插入完毕后跳出循环 } q=q->next; t=t->next; } if(q==NULL) { p=(struct node *)malloc (sizeof(struct node)); p->data=b; p->next=q; t->next=p; } } t=head; while(t!=NULL) { printf("%d ",t->data); t=t->next; } printf("\n"); return 0; }
相关文章推荐
- ICCV、CVPR、ECCV、ICML、NIPS qq深度交流群,欢迎大家来交流
- open("/dev/mem ",O_RDWR | O_SYNC)
- 字符串的操作:取字符, 替换字符,字符拼接,转换,插入字符等
- 得到滑动条的宽度
- 关于android中layout_gravity和gravity对View的影响
- Library用法&SlidingMenu简介
- VS2010配置opencv 2.4.3
- Java之增强的for 循环
- 2015年面试经历
- css换行
- Java之增强的for 循环
- 都灵中文离线地图App上线
- bash代码
- Android Studio快捷键大全
- QQ旅程server分析01-网关server
- bash代码
- 多线程入门教程(五)MFC的多线程
- MFC骨干程序
- leetcode 第14题 Longest Common Prefix
- window对象中的navigator和location的演示