数据结构C语言实现顺序链表基本操作(插入,排序,合并)
#include<stdlib.h>
typedef int Status;
ElemType data;
struct LNode *next;
}LNode,*LinkList;
{
LinkList p,q;
int i,n;
printf("请输入数据的个数\n");
scanf("%d",&n);
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
q=L;
printf("请输入%d个数据\n",n);
for(i=0;i<n;i++)
{
p=(LinkList)malloc(sizeof(LNode));
scanf("%d",&p->data);
q->next=p;
q=q->next;
}
p->next=NULL;
}
{
LinkList p,q;
int i,n;
printf("请输入数据的个数\n");
scanf("%d",&n);
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
q=L;
printf("请输入%d个数据\n",n);
for(i=0;i<n;i++)
{
p=(LinkList)malloc(sizeof(LNode));
scanf("%d",&p->data);
p->next=q->next;
q->next=p;
}
}
{
LinkList p;
p=L->next;
printf("链表中的数据为\n");
while(p)
{
printf("%d\t",p->data);
p=p->next;
}
}
{
LinkList p;
int n=0;
p=L->next;
while(p)
{
n++;
p=p->next;
}
return n;
}
{
int i;
LinkList p,q;
p=(LinkList)malloc(sizeof(LNode));
p->data=e;
q=L;
for(i=0;i<n-1;i++)
{
q=q->next;
}
p->next=q->next;
q->next=p;
return OK;
}
{
int i;
LinkList p,q;
q=p=L;
for(i=0;i<n-1;i++)
{
p=p->next;
q=q->next;
}
q=q->next;
e=q->data;
p->next=q->next;
}
{
LinkList r,q,p,end,temp;
end=NULL;
while(L -> next != end)
{
r=L;
q=r->next;
p=q->next;
while(p!=end)
{
if(q->data>p->data)
{
q -> next = p -> next;
r -> next = p;
p -> next = q;
temp = p;
p = q;
q = temp;
}
r=r->next;
q=q->next;
p=p->next;
}
end =q;
}
return OK;
}
{
LinkList p,q,end;
int t,n=0,i,j;
end=NULL;
p=L->next;
q=p->next;
while(L->next!=end)
{
p=L->next;
q=p->next;
while(q!=end)
{
if(p->data>q->data)
{
t=p->data;
p->data=q->data;
q->data=t;
}
p=p->next;
q=q->next;
}
end=p;
}
return OK;
}
void MergeList(LinkList &La,LinkList &Lb,LinkList &Lc) //合并链表
{
LinkList r,q,p;
q=La->next;
p=Lb->next;
r=Lc=La;
while(q!=NULL&&p!=NULL)
{
if(q->data<p->data)
{
r->next=q;
r=r->next;
q=q->next;
}
else
{
r->next=p;
r=r->next;
p=p->next;
}
}
if(q!=NULL)
r->next=q;
else
r->next=p;
}
{
int n;
ElemType e;
LinkList La,Lb,Lc;
printf("创建链表La\n");
CreatList(La);
PrintList(La);
n=ListLength(La);
printf("\n该链表的长度为 %d\n",n);
printf("请输入需要插入的位置和数据\n");
scanf("%d %d",&n,&e);
ListInsert(La,n,e);
PrintList(La);
printf("\n请输入需要删除数据的位置\n");
scanf("%d",&n);
DeletList(La,n,e);
PrintList(La);
printf("\n被删除的数据为 ");
printf("\n%d\n",e);
if(SortList(La)!=1)
printf("排序错误");
printf("排序后\n");
PrintList(La);
printf("\n创建链表Lb");
CreatList(Lb);
if(SortList(Lb)!=1)
printf("排序错误");
printf("排序后\n");
PrintList(Lb);
MergeList(La,Lb,Lc);
printf("\n将链表La和Lb合并为Lc\n");
PrintList(Lc);
printf("\n\n\t 杨佳宁创作");
return 0;
}
数据结构C语言实现顺序链表基本操作(插入,排序,合并)相关推荐
- 逆置单链表c语言程序,(数据结构C语言版)顺序表和单链表的逆置
<(数据结构C语言版)顺序表和单链表的逆置>由会员分享,可在线阅读,更多相关<(数据结构C语言版)顺序表和单链表的逆置(7页珍藏版)>请在人人文库网上搜索. 1.实验1-1顺序 ...
- C语言实现单链表基本操作
C语言实现单链表基本操作的 目录
- C语言创建顺序表并插入元素 详细注释
顺序表是用一组地址连续的存储单元依次存储数据元素的数据结构.顺序表是线性表的一种,线性表是最常用且最简单的一种数据结构,一个线性表是 n 个数据元素的有限序列.我们使用 c 语言来创建顺序表并插入元素 ...
- 数据结构Java实现03----单向链表的插入和删除b
文本主要内容: 链表结构 单链表代码实现 单链表的效率分析 一.链表结构: (物理存储结构上不连续,逻辑上连续:大小不固定) 概念: 链式存储结构是基于指针实现的.我们把一个数据 ...
- Java数据结构——Java语言下的链表
文章目录 1. Java语言下的链表 1.1 内部类定义结点 1.2 初始链表,只有头结点 1.3 清空链表 1.4 返回元素的位置(在第几个结点) 1.5 在某个结点处插入元素 1.5 删除某个结点 ...
- c语言判断顺序链表是否为空,数据结构之线性表(五)——单链表(2 初始化,判断空表,销毁,清空,求表长)...
1.单链表(带头结点)的初始化 即,构造一个空表,如下图, 算法步骤: 1.生成新结点作头结点,用头指针L指向头结点. 2.将头指针的指针域置空. 算法描述: Status InitList_L(Li ...
- 数据结构专题(二):2.4链表的插入操作,头插法
头插法一: 思想如下图: 如下代码: ///头插法建立单链表 LinkListNode *Create_Front_Lklist(ElemType arr[],int length) {LinkLis ...
- 数据结构(C语言描述)——顺序表
上一篇文章里面我们创建了一个封装预处理命令和宏定义的头文件"StdFile.h",现在我们再次引用此头文件,进行后续操作. 可能读者对顺序表的结构有点难以理解,这里举一个形象的例子 ...
- 数据结构(C语言版)——顺序栈(代码版)
一.代码 #include <stdio.h> #include <stdlib.h>#define MAXSIZE 10 #define OK 1 #define ERROR ...
最新文章
- HTML解析利器HtmlAgilityPack
- javascript中对变量类型的推断
- form子句语法错误_用示例语法解释SQL的子句
- Tensorflow深度学习应用(进阶篇)
- 推荐]招商就象谈恋爱
- HNU 实验五松雅的旅馆
- Linux上mysql安装详细教程
- idea中ssm自动配置
- linux读取.data文件,Android获取文件夹路径 /data/data/
- linux系统下Gaussian16和Gaussian view6的详细安装步骤
- Js获取外网IP地址
- Python爬虫-博客and贴吧
- 编译SAM BA报错
- idea运行web项目光标乱跳
- 仿支付宝输入密码界面
- Camera效果测试-白平衡AWB测试
- 安装 Black Duck
- css梯形 transform和动画
- 当运行pychrm时遇到please select a valid interpreter怎么解决
- TensorFlow学习--tf.summary.histogram与直方图仪表板/tensorboard_histograms