链表
文章平均质量分 92
_是真的
闲来又无事
偷闲写一写
展开
-
双向链表的插入排序(交换节点)
插入排序需要从后往前遍历寻找可以插入的位置,所以会使用到双向链表typedef struct Node//定义的结构体{ int data; struct Node* per; //记录前驱 struct Node* next;}*List;创建带头节点的双链表List create_list(){ List head = (List)malloc(Size);//#define Size sizeof(struct Node) List p, q = head; if (head原创 2020-11-16 14:09:37 · 2825 阅读 · 4 评论 -
C链表选择排序(交换节点排序)
排序函数的代码如下:void select_sort(struct node* head)//选择排序(升序){ struct node* pre = head; struct node* p = pre->next; struct node* bmin = pre, * min, * lmin;//bmin是min前一个节点,lmin是min后一个节点 struct node* bq, * q; //bq记录q的前一个节点 while (p->next)//至少要有两个数才会进原创 2020-11-12 23:11:46 · 1446 阅读 · 3 评论 -
C链表冒泡排序(交换节点排序)
废话不多说,直接上排序函数吧void sort_list(struct node* head){ struct node* pre, * p, * q; struct node* tail = NULL; if (head) { while (head->next != tail)//传入的是带头节点的链表,为了简便操作 { //头节点未赋值,所以从head->next开始 pre = head; p = head->next;原创 2020-11-10 23:42:51 · 2681 阅读 · 5 评论