数据结构-实现俩链表(int)拼接后还是有序的
来源:互联网 发布:淘宝耐克双肩包 编辑:程序博客网 时间:2024/06/03 01:42
ex2.2
#include<stdio.h>
typedef struct{
int data;
struct Node* next;
}Node;
typedef struct{
struct Node* listHead;//表基址
int listLength;//表长
}L;
/*************************************函数---自定义建表*******************************************/
L arrBuild()
{
int end;
printf("请输入一个int作为结束标志end= ");
scanf("%d",&end);
getchar();
printf("\n\n");
printf("请输入一组数据(int型):");
int temp,listLength=0;
Node* listHead=NULL;
scanf("%d",&temp);//&!&!&!
Node* p1=(Node*)malloc(sizeof(Node));//位置
if(p1==NULL) exit(-1);
if(temp!=end)
{
p1->data=temp;
p1->next=NULL;
listHead=p1;
listLength++;
}
Node* q1=p1;//p1伴随指针
scanf("%d",&temp);
while(temp!=end)
{
p1=(Node*)malloc(sizeof(Node));//还用p1---方便循环
if(p1==NULL) exit(-1);
p1->data=temp;
p1->next=NULL;
listLength++;//写一个,加一个
q1->next=p1;//链接
q1=p1;//q1后移
scanf("%d",&temp);
}getchar();//去掉\n
printf("\n");
L listInfo={listHead,listLength};
return listInfo;
}
/******************************************************函数-打印list************************************************/
void printList(Node* li)
{
Node* q=li;
while(q!=NULL)
{
printf("%5d",q->data);
q=q->next;
}
printf("\n\n");
}
/***********************************************函数-拼接俩表***************************************************
这类过程 指针变量比较多的过程---建议先大体上写下再用实例来完善
or 直接使用实例
*/
Node* listCat(L* li1,L* li2)
{
Node* head1=li1->listHead;//记录表头,把表2往表1中插
Node* p1=li1->listHead;//p1,p2作为游标指针
Node* p2=li2->listHead;
Node* pre_p1=NULL;
while(p1->next!=NULL && p2!=NULL )
{
if(p2->data>p1->data)
{
pre_p1=p1;//为p1移动后记录下p1上一个节点位置
p1=p1->next;
}
if(p2->data<=p1->data)
{
Node* q=p2->next;//
if(p1==li1->listHead)
{
//printf("插入的节点是表头\n");
head1=p2;//更换表头
p2->next=p1;
p2=q;
}else{
//printf("222222 插入的节点不是表头\n");
p2->next=p1;
pre_p1->next=p2;
p2=q;//q2后移
}
}
}
while(p1->next==NULL&&p2!=NULL)//不是 p1->next==NULL&&p2!=NULL
{
p1->next=p2;
}
//while(p2==NULL&&p1!=NULL){}
return head1;
}
/*************************************************************************/
int main()
{/***************************************************建表********************************************/
printf("\n!!!int按 小->大 输入\nlistSort()更新中......\n\n\n");
L list1=arrBuild();
printf(">>>表1为:");
printList(list1.listHead);
L list2=arrBuild();
printf(">>>表2为:");
printList(list2.listHead);
Node* list3=listCat(&list1,&list2);
printf("拼接后的新表为:");
printList(list3);
/*****************************************************************/
getchar ();
return 0;
}
- 数据结构-实现俩链表(int)拼接后还是有序的
- 用顺序表实现俩有序顺序表拼接后还是有序的
- 数据结构实现之有序符号表BinarySearchST(使用有序数组的二分查找)
- 在SQL Sever中,Null与任何字符串拼接后的结果还是Null的解决办法
- 数据结构-用链表函数实现链表的有序合并
- C++实现:合并两个有序的数组,合并后的数组依然有序
- C语言实现:合并两个有序的数组,合并后的数组依然有序
- C语言数据结构——数据结构有序二叉树的函数实现
- 数据结构与算法(5、链表的拼接)
- 全景视频拼接(五):将拼接后的图片合成视频
- 实现图片的拼接
- 有序单链表拼接
- 有序链表拼接
- 数据结构总结(一):一种特殊的有序队列
- 数据结构(3):两个有序线性结构的合并
- 有序链表的合并(数据结构---单链表)
- 优先队列的数组实现(有序)
- 有序表的实现
- 《Java核心技术》第10版读书笔记之Chap5(2)——方法调用过程、final、类型转换、abstract与访问标识符
- 数据的操作 标准语言SQL
- 无配置文件实现简单web工程
- 13:图像模糊处理
- 利用方程组系数向量是否共面来判断解的唯一性
- 数据结构-实现俩链表(int)拼接后还是有序的
- 为国庆献礼:无人智能系统,守护祖国海空长城
- 16杭州ccpc Equation HDU
- Set集合及其实现类
- 选择排序
- iOS delegate、NSNotification效率比较
- BZOJ 2648 SJY摆棋子 KDtree
- UVA-10587 Mayor's Posters verZGC-PJ
- HTML 逆序输出 输出引号