#include #include #include #include #include //定义结构体,链表中的节点 typedef struct student { int data; struct student* next;//双向链表,指向后一个节点 struct student* pre;//指向前一个节点 }dnode; typedef struct student* pnode; //创建节点,返回节点指针 //输入:节点的值 //输出:节点的指针 pnode createNode(int n) { pnode p=NULL; p=(pnode)malloc(sizeof(dnode)); p->next =NULL; p->pre = NULL; p->data =n; return p; } //在链表中按 data 升序插入节点 //输入:链表头指针,节点指针 //输出:链表头指针 pnode insert(pnode head,pnode temp) { pnode p=NULL; pnode k=NULL;// if(NULL==temp)//如果插入空节点,直接退出返回头节点指针 { return head; } if(NULL==head)//如果头指针为空, { head = temp;//节点就作头 }else { if(head->data > temp->data) {//如果头指针的值大于插入节点的值 //节点插入到最前面作为头节点 temp->next = head; head->pre = temp; head = temp; }else { p = head->next;//从第二个节点开始比较 k = head; while(NULL
=p) {//如果插入节点值比当前节点值小,那插入到当前节点前面 //如果比当前节点值大,那