作业二之合并链表
来源:互联网 发布:古城数据 编辑:程序博客网 时间:2024/06/05 06:32
#include<stdio.h>//链表没有长度的限制
#include<malloc.h>
typedef struct node
{
int data;
struct node* next;
}Node,*Lnode;//定义结点
void insert(Lnode head) //插入数据
{
int i;
Lnode q; //定义全局变量q,用q来辅助构造链表
for(i=0;i<3;i++)
{
Lnode p=(Lnode)malloc(sizeof(Node));//创建新结点
printf("please input the num: ");
scanf("%d",&(p->data));
if(head->next==NULL)
{
head->next=p;
p->next=NULL;
q=head->next;
}
else
{
q->next=p;
p->next=NULL;
q=p;
}
}
}
void print(Lnode head)
{
int i;
Lnode p=head->next;//指向第一个结点
for(i=0;i<6;i++)
{
printf("%d ",p->data);
p=p->next;
}
}
void unite(Lnode *head1,Lnode *head2,Lnode *lc)//如果有2个'*',就是&head,一个就直接是head
{
Lnode p1,p2,p3,p4,p5;
int i,j;
p1=*head1;//指向头结点
p2=*head2;
p3=p1->next;//指向第一个结点
p4=p2->next;
p5=*lc=*head1;
for(;p3&&p4;)
{
if(p3->data<=p4->data) {p5->next=p3;p5=p3;p3=p3->next;}
else {p5->next=p4;p5=p4;p4=p4->next;}
}
p5->next=p3?p3:p4;
}
void main()//合并链表千万不要怕设置参数,可以多设几个参数来进行合并
{
Lnode head1,head2,head3;
int i,j;
head1=(Lnode)malloc(sizeof(Node));
head1->next=NULL;//创建空链表
head2=(Lnode)malloc(sizeof(Node));
head2->next=NULL;
head3=(Lnode)malloc(sizeof(Node));
head3->next=NULL;
printf("init head1 /n");
insert(head1);
printf("init head2 /n");
insert(head2);
unite(&head1,&head2,&head3);
print(head3);
}
- 作业二之合并链表
- 作业二 双向链表
- 数据结构题典013:链表合并之二(ANSI C)
- 数据结构【线性表(二)链表】项目之合并有序表
- Python学习笔记之二 文本文件合并
- BOM制作系列之二:BOM合并
- 数据结构【线性表(二)链表】项目之合并有序表(解法二)
- 数据结构之链表面试题汇总(二)-有序单向链表的合并、单向链表反转
- 作业二之SharedPreferences,CustomAdapter(Android)
- 第二周实验作业之二
- YTUOJ之合并链表(线性表)
- 作业:表格合并
- 作业-合并果子(fruit)
- 数据结构之链表合并算法
- 链表之单链表的合并
- 单链表之合并两个链表
- 数据结构之合并链表STL
- 作业二 顺序表问题
- 英文自我介绍荟萃精品11条
- 嵌入式视频教程汇总
- 第1篇 封装集合
- OpenCV入门之播放AVI视频
- SVN权限配置
- 作业二之合并链表
- 操作系统的内存对齐
- 第四章 - 字符串和格式化输入输出——scanf()函数
- 10个漂亮问题完美结束面试
- 实现物体绕不同轴旋转,并可以外部调用的函数
- 在CSS中定义A:active/A:link/A:visited/A:hover顺序- 费吉德-
- FreeBSD启动和重启nginx
- 从.NET平台调用Win32 API
- 深入浅出Wince的存储