您的位置:首页 > 其它

插入一个数

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: