文章

9

粉丝

289

获赞

4

访问

81.5k

头像
1015单链表(注释详细)
P1015 贵州大学机试题
发布于2021年3月7日 21:11
阅读数 11.3k

#include <stdio.h>
#include <malloc.h>
//定义单链表结点
typedef struct node{    //这里用使用typedef定义新的数据类型
    int data;//数据域
    struct node *next;//指针域
}node;//定义别名,在其他地方才可以使用node这个命名

//创建链表(输入数据数组,返回头指针)
node* create(int a[])
{
    node *p, *L, *head;
    int i;
    head = (node *) malloc(sizeof(node));//分配内存
    head->next= NULL;
    L = head;
    for(i=0; i<5; i++)
    {
        p = (node *)malloc(sizeof(node));
        p->data = a[i];
        p->next = L->next;
        L->next = p;
    }
    return head;
}
//递增排序单链表(直接插入)
void sort(node* L)
{
    node *p = L->next, *pre;
    node *r = p->next;
    p->next = NULL;  //先将链表分成两条独立的链,头结点L指向的链只带有一个结点
    p = r;
    //将p指向的另一条链,比较大小后,在合适的位置插入到主链
    while(p!= NULL)
    {
        r = p->next;
        pre = L;
        //pre从头结点的next开始往下找,直到找到第一个大于p.data的结点 或者 pre.next为null
        while(pre->next!=NULL && pre->next->data < p->data)
         ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发