循环双链表创建以及排序
1. 创建双链表
完整代码如下
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int data;
struct node *nex;
struct node *pre;
}NODE;
void Add_Data(NODE*,int);
int main()
{
NODE*head = (NODE*)malloc(sizeof(NODE));
//给head结点申请一个内存
head->pre = head;
head->nex = head;
//head上一个和下一个都指向自己
int num, data;
printf("请输入双链表长度:");
scanf_s("%d", &num);
for (int i = 1; i <= num; ++i)
{
printf("第%d个数据:", i);
scanf_s("%d", &data);
//插入函数调用位置
Add_Data(head, data);
}
system("pause");
return 0;
}
void Add_Data(NODE*head, int data)//插入函数(尾插法)
{
NODE*p = (NODE*)malloc(sizeof(NODE));
p->data = data;
p->nex = head;
p->pre = head->pre;
p->nex->pre = p;
p->pre->nex = p;
}
*使用的是尾插法 //即每一次插入都要插在head的前面,或者说是最后一个的后面*
详解
- 下面是每步的代码和图解
一开始head指向自己
head->pre = head;
head->nex = head;
现在插入一个p