一,直接插入法
直接插入法可以在插入数据的过程中直接对数字的大小进行判断排序从而保证输入的结构按照一定顺序(正/负序)输出,其代码如下:
void linklistDrecInsert(linklist *head, datatype value){
linklist *temp = (linklist *)malloc(sizeof(linklist));
temp->data = value;
temp->next = NULL;
whilie(head->next!=NULL && value >= head->next->data){
head = head->next; //找到比输入数字大的前一位置;
}
temp->next = head->next; //采用头插法两步走;
head->next = temp;
return ;
}
该方法容易理解,通过遍历链表找到需要输入的数字在链表中的位置,并将head头结点移动到前一节点,使用头插法直接出入节点数据;
二,链表翻转的实现
void linklistReverse(linklist *head){
linklist *p, *q;
p = head->next;
head->next =NULL;
while(p != NULL){
q = p;
p = p->next;
//头插法两部走
q->next = head->next;
head->next = q;
}
return ;
}
代码的思路是通过两个指针对于链表的节点进行遍历,首先通过P指针指向头节点指向的节点位置,然后将头节点指向空,利用q指针将每个节点按照顺序与头节点用头部插入法插入,这样的到的链表与原来相比输入的顺序是相反的自然可以得到翻转的链表;