写给初学数据结构的同学之(循环双链表基本操作,创建,插入,删除,排序)...
1.双向循环链表的创建:没什么好说的
NODE * Doublelinklist()
{
NODE *head = NULL;
return head;
}
2.插入节点:
NODE *myinsert(NODE *head,NodeData Data)
{
NODE *last = head;
if(head == NULL)
{
head = (NODE *)malloc(sizeof(NODE));
head->data = https://www.it610.com/article/Data;
head->next = head;
head->pione = head;
}
else
{
NODE *newnode = (NODE *)malloc(sizeof(NODE));
newnode->data = https://www.it610.com/article/Data;
while(last->next != head)
{
last = last->next;
}
last->next = newnode;
newnode->pione = last;
newnode->next = head;
head->pione = newnode;
}
return head;
}
【写给初学数据结构的同学之(循环双链表基本操作,创建,插入,删除,排序)...】3.删除节点:
NODE *myremove(NODE *head,int data)
{
NODE *q = head;
if(head == NULL)
{
printf("该链表为空!无法再进行删除!\n");
return head;
}
else
{
if(head->next == head)
{
if(head->data =https://www.it610.com/article/= data)
{
free(head);
head = NULL;
return head;
}
else
{
printf("没有相关结点!\n");
return head;
}
}
else
{
if(head->data =https://www.it610.com/article/= data)
{
NODE *pre = head->pione;
NODE *ne = head->next;
head = head->next;
pre->next = head;
free(q);
q = NULL;
return head;
}
else
{
while((q->data != data) && (q->next != head))
{
q = q->next;
}
if(q->data =https://www.it610.com/article/= data)
{
NODE *pre = q->pione;
NODE *ne = q->next;
pre->next = ne;
ne->pione = pre;
free(q);
q = NULL;
return head;
}
else
{
printf("没有相关节点!\n");
return head;
}
}
}
}
}
4.排序:我这里是用的冒泡排序,还可以用直接插入排序,选择插入排序,快速排序。
直接插入排序会比较容易实现,快速插入排序的基准有点蛋疼。
NODE *mysort(NODE *head)
{
NODE *p = head;
NODE *max = head;
NODE *ne = NULL;
NODE *pre = NULL;
int len = Doublelinklistlen(head);
int i = len - 1;
int j = len - 1;
if((head == NULL) && (head->next == head))
{
return head;
}
else
{
while(i--)
{
p = head;
while(p->next != head)
{
if(p->next->data > p->data)
{
if(p == head)
{
head = p->next;
}
ne = p->next;
pre = p->pione;
p->next = p->next->next;
p->next->pione = p;
ne->next = p;
p->pione = ne;
ne->pione = pre;
pre->next = ne;
}
else
{
p = p->next;
}
}
}
}
return head;
}
实践出真知,好好先直接试着写写,写不出来再看别人的。或者先好好看,然后再直接试着写写。最好不要一边看,一边写~~~~~~~
下面,我会继续更新一些其他的数据结构的知识,我个人觉得,学习数据结构,多画画图,要知道一些数据结构的基本操作,单链表太简单,我只会说一下单链表的转置,
然后就栈和队列,树(以二叉树为主),排序等等~~~~~~希望有兴趣的同学可以关注~~~~~~~
推荐阅读
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)
- 写给陈羡
- 写给我20岁时爱过的那个男孩
- 晨读感悟|晨读感悟 | 写给妈妈的一封信
- 写给十七年后的你
- 《数据结构与算法之美》——队列
- 写给蜗牛——第25书
- 2018-07-26刘慈欣写给女儿的一封信
- 写给马兰的第三十三封信。
- 开学第一天~~写给我的小公主