设待排序的记录序列用单链表做存储结构,试写出插入排序算法。。。。-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

设待排序的记录序列用单链表做存储结构,试写出插入排序算法。。。。

知与谁同 2018-07-21 12:55:05 1598
设待排序的记录序列用单链表做存储结构,试写出插入排序算法。。。。
存储 搜索推荐
分享到
取消 提交回答
全部回答(1)
  • 玄学酱
    2019-07-17 22:50:57
    #include"stdafx.h"
    #include "stdio.h"
    typedef struct node{
    int data;
    struct node *next;
    }node;
    void main()
    {
    node *create(){
    node *head,*p,*q;
    q = head;
    int i=0;
    int x;
    head=(node *)malloc(sizeof(node));
    while(1)
    {
    printf("please input the node:");
    scanf("%d",&x);
    if(x==0) {break;}
    p=(node *)malloc(sizeof(node));
    p->data=x;
    if(++i==1)
    {
    head->next=p;
    }
    else
    {
    q->next=p;
    }
    q=p;
    }
    q->next=NULL;
    return head;
    }
    node *search(node *head,int pos)
    {
    node *p;
    int len=length(head);
    p=head->next;

    if(pos<0) {

    printf("incorrect position!\n"); return NULL;
    }
    else if(pos>len)
    {
    printf("incorrect position!\n"); return NULL;
    }
    else if(pos==0) {

    return head;
    }
    if(p==NULL) {

    printf("the link is empty!\n"); return NULL;
    }
    while (--pos)

    { p=p->next; }

    return p;
    }
    node *insert(node *head,int pos,int x)
    {
    node *p,*q=NULL;
    q=(node *)malloc(sizeof(node));
    q->data=x;
    if(pos==0) {

    head->next=q; return head; }

    p=search(head,pos);

    if(p!=NULL) { q->next=p->next; p->next=q; }

    return head;
    }
    }
    0 0
+ 订阅

了解行业+人工智能最先进的技术和实践,参与行业+人工智能实践项目

推荐文章
相似问题