1/8学习总结

今天粗略学习了一点链表,但是做题的时候发现好多操作不知道该怎么动手,所以今天只做出一个题。

题目描述

(线性表)已知不带头结点的线性链表list,链表中结点构造为(data、link),其中data为数据域,link为指针域。请写一算法,将该链表按结点数据域的值的大小从小到大重新链接。要求链接过程中不得使用除该链表以外的任何链结点空间。

输入格式

自定义链表节点数

m=5

3 1 5 4 6

输出格式

1 3 4 5 6

样例输入content_copy

8

10 1 5 14 32 55 67 6

样例输出content_copy

1 5 6 10 14 32 55 67 

 思路:就是用冒泡法排序

代码如下 

#include <stdio.h>
struct math
{
    int a;
    struct math *next;
};
int main()
{
    int n;
    scanf("%d",&n);
    struct math *head,*p,*q;
    p=head=(struct math*)malloc(sizeof(struct math));
    int i,j,temp;
    for(i=0; i<n; i++)
    {
        q=(struct math*)malloc(sizeof(struct math));
        scanf("%d",&q->a);
        p->next=q;
        p=p->next;
    }
    p->next=NULL;
    p=head->next;
    for(i=1; i<n; i++,p=p->next)
        for(q=p->next; q!=NULL; q=q->next)
            if(p->a>q->a)
            {
                temp=p->a;
                p->a=q->a;
                q->a=temp;
            }
    p=head->next;
    do
    {
        printf("%d ",p->a);
        p=p->next;
    }while(p!=NULL);
    return 0;
}

题目描述

(线性表)已知一单链表,从第二个结点至表尾递增有序,(设a1<x<an)如下图(“第二个结点至表尾”指a1..an )。试编写程序,将第一个结点删除并插入表中适当位置,使整个链表递增有序。

输入格式

输入长度n:7

输入数据:4 1 2 3 6 8 9

输出格式

1 2 3 4 6 8 9

样例输入content_copy

5
11 7 8 9 10

样例输出content_copy

7 8 9 10 11 

 这一题,不知道怎么插入,所以直接重排了,代码和上一题一样就不发了 

总结:链表有些不懂导致题目即使有思路也做不出来,希望这几天能多努点力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值