• 大小: 3KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-14
  • 语言: C/C++
  • 标签: 快速排序  

资源简介

使用双向链表实现快速排序,C语言,有详细注释

资源截图

代码片段和文件信息

#include
#include


struct List
{
       int data;
       int no;
       List *next;
       List *pre;
};//二维链表,no表示第几个元素


void Init_List(List *ptr)
{
     ptr=(List*)malloc(sizeof(List));
     if(!ptr)
         printf(“Error\n“);
     ptr->no=0;
     ptr->next=NULL;
     ptr->pre=NULL;
}//初始化双向链表


void Create_List(List *ptr)//构造双向链表 ptr为头指针 
{
     int temp;
     List *p;
     List *q=ptr;
     int num=1;
     
     printf(“Please input the data of the list\n“);
     scanf(“%d“&temp);
     
     while(temp!=-1)//读入数据不为-1 
     {                
         p=(List *)malloc(sizeof(List));
         if(!p)
             printf(“Error\n“);//分配内存 
         p->no=num++;//建立第num个元素  
         p->data=temp;
         p->pre=q;
         q->next=p;
         q=q->next;//链表的连接以及修改指针 
         scanf(“%d“&temp);
     }
     p->next=NULL;
}


List * Get_LastPtr(List *ptr)//求最后一个地址 
{
     List *p=ptr;
     
     while(p->next!=NULL)
         p=p->next;
         
     return p;//返还最后一个节点的地址 
}


void Print_List1(List *ptr)//从前往后打印链表 
{
     List *p=ptr->next;
     
     while(p->next!=NULL)
     {
         printf(“%d “p->data);
         p=p->next;
     }
     printf(“%d\n“p->data);
}
void Print_List2(List *ptr)//从后往前打印链表 
{
     List *p=Get_LastPtr(ptr);
     
     while(p->pre!=ptr)
     {
         printf(“%d “p->data);
         p=p->pre;
     }

评论

共有 条评论