双向链表-插入元素
2017-12-10 18:17
253 查看
不会写CSDN博客,所以试试
双向链表在一个有序数列中插入一个数,使之依旧有序。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define len sizeof(struct node)
#define newp (struct node*) malloc(len)
struct node{
int num;
struct node *next,*pre;
};
struct node *p1,*head,*temp,*qian,*hou,*tail;
int n,x,i;
int main()
{
scanf("%d",&n);
p1=newp;
p1->pre=NULL;
head=p1;
for (i=1; i<=n; i++)
{
scanf("%d",&x);
p1->num=x;
if (i>1)
{
qian->next=p1;
p1->pre=qian;
}
qian=p1;
if (i==n) tail=p1; else p1=newp;
}
tail->next=NULL;
scanf("%d",&x);
p1=head;
int zh=0,zq=0;
for (;;)
{
if (p1->num>x) break;
if (p1->next==NULL) {
zh=1;
break;
} else p1=p1->next;
}
temp=newp;
temp->num=x;
if (zh==0)
{
qian=p1->pre;
hou=p1;
temp->pre=qian;
temp->next=hou;
hou->pre=temp;
qian->next=temp;
}
if (zh==1)
{
tail->next=temp;
temp->pre=tail;
temp->next=NULL;
}
return 0;
}
双向链表在一个有序数列中插入一个数,使之依旧有序。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define len sizeof(struct node)
#define newp (struct node*) malloc(len)
struct node{
int num;
struct node *next,*pre;
};
struct node *p1,*head,*temp,*qian,*hou,*tail;
int n,x,i;
int main()
{
scanf("%d",&n);
p1=newp;
p1->pre=NULL;
head=p1;
for (i=1; i<=n; i++)
{
scanf("%d",&x);
p1->num=x;
if (i>1)
{
qian->next=p1;
p1->pre=qian;
}
qian=p1;
if (i==n) tail=p1; else p1=newp;
}
tail->next=NULL;
scanf("%d",&x);
p1=head;
int zh=0,zq=0;
for (;;)
{
if (p1->num>x) break;
if (p1->next==NULL) {
zh=1;
break;
} else p1=p1->next;
}
temp=newp;
temp->num=x;
if (zh==0)
{
qian=p1->pre;
hou=p1;
temp->pre=qian;
temp->next=hou;
hou->pre=temp;
qian->next=temp;
}
if (zh==1)
{
tail->next=temp;
temp->pre=tail;
temp->next=NULL;
}
return 0;
}
相关文章推荐
- 向带头结点的双向链表中第i个位置之前插入元素e
- C 语言 实现双向链表 模拟ArrayList功能 可追加,插入,移除,得到指定index 的元素值
- 编写算法实现建立一个带头结点的含n个元素的双向循环链表H,并在链表H中的第i个位置插入一个元素e
- 双向链表元素的插入
- 双向链表元素的插入
- C语言实现链表之双向链表(九)在任意位置插入结点
- 双向链表插入节点
- 数据结构-双向链表插入
- 双向链表插入结点的理解。
- C语言实现双向链表删除节点、插入节点、双向输出等操作
- 单链表,双向链表的插入,查询,创建,删除,输出
- 从链表中插入元素
- 单链表插入删除元素时间复杂度探究
- 链表的概念以及原理 插入和删除元素
- 创建一个链表,插入删除,指定元素
- 双向链表的创建、打印、求长、插入、删除、查值、清空、销毁
- 双向链表的正位序插入与输出
- 精简双向链表的插入代码
- 链表插入元素的三种递归实现 -- 简单递归,数据累加器,函数累加器
- 双向链表L每次访问元素后,元素按访问频度递减次序排列