资源简介
使用双向链表实现快速排序,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;
}
- 上一篇:非常好用的C语言线程池,自己测试通过
- 下一篇:c语言代码,去停用词
评论
共有 条评论