[总结]线性表综合应用:建立顺序表、排序、单链表、链表逆置、合并链表顺序表

本文介绍了线性表的顺序存储和链式存储,包括如何建立顺序表、使用快速排序对顺序表进行排序、创建降序单链表、链表逆置以及将顺序表和链表合并成有序表的操作。文章通过C语言实现,详细讲解了每个步骤并提供了完整代码。
摘要由CSDN通过智能技术生成

写在前面:大家好,我是草莓橙须圆。毕业之前在CSDN和微信公众号活跃
欢迎关注我的公众号:【草莓橙须圆】
微信公众号主要就是更新大学生或者考研党的日常
CSDN主要就是学习过程中总结的笔记,以及编程分享

关于线性表,还是先看运行结果吧。
在这里插入图片描述
(1)按照输入的顺序建立顺序表:

线性表采用顺序存储的方式存储就称之为顺序表,顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。

线性表的动态分配顺序结构:


typedef struct{
   //顺序表的存储结构定义 
	DataType data[ListSize];//顺序表占用的数组空间 
	int length;//记录顺序表长度 
}Seqlist;
 
Seqlist CreateList(Seqlist L,int j)  //结构体变量作为函数的参数,修改之后的成员值不能返回到主调函数,不过可以return返回它
{
   
    int n;
    L.length=0;
    
	while(L.length<j)
    {
   
        scanf("%d",&n);
        L.data[L.length]=n;
        L.length++;
    }
    return L;
}

然后,在main函数中调CreateList(mylist,j)函数

(2)对顺序表进行排序

这里选择使用快速排序

快速排序的思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。

void QuickSort(Seqlist *L,int low,int high)//快速排序 
{
   
    int i=low,j=high;  //low和high的位置待会递归的时候要用到
    DataType pivotvalue=L->data[i];  //注意这里要用data[i]
    if(low>=high)  //一趟排序结束
        return;   
    while(i<j)
    {
   
        while(i<j&&L->data[j]>=pivotvalue)
            j--;
        L->data[i]=L->data[j];
        while(i<j&&L->data[i]<=pivotvalue)
            i++;
        L->data[j]=L->data[i];
    }
    L->data[i]=pivotvalue;
    QuickSort(L,low,i-1);
    QuickSort(L,i+1,high);
}

然后,在main函数中调用QuickSort(&mylist,0,mylist.length-1);函数,对之前创建的顺序表进行排序。

(3)按照从大到小顺序建议一个单链表

线性表采用指针链接的方式存储就称之为链表。

 //单向链表声明
typedef struct LNode
{
   
    int data;
    struct LNode *next;
}LNode;
/* 链表创建 */
LinkList CreatLink(int num)
{
   
    int data;

    //p指向当前链表中最后一个结点,q指向准备插入的结点。
    LinkList head = NULL, rearNode = NULL, newNode;

    for (int i = 0; i < num; i
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值