資源簡介
使用雙向鏈表實現快速排序,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語言代碼,去停用詞
評論
共有 條評論