双链表的基本操作

来源:互联网 发布:淘宝上开店怎么找货源 编辑:程序博客网 时间:2024/05/21 17:22
#include <iostream>#include <stdio.h>#include <string.h>#include <cnio.h>using namespace std;typedef struct student{int data;struct student *next;struct student *pre;}dnode;//建立双链表dnode *create(){dnode *head,*p,*s;int x,cycle = 1;head = (dnode*)malloc(sizeof(dnode));p = head;while(cycle){printf("\nplease input the data:);scanf("%d",&x);if(x!=0){s = (dnode*)malloc(sizeof(dnode));s->data = x;printf("\n%d",s->data);p->next = s;s->pre = p;p =s;}elsecycle = 0;}head = head->next;head->pre = NULL;p->next = NULL;printf("\n %d ",head->data);return head;}
//双链表删除节点dnode *del(dnode *head,int num){dnode *p1,*p2;p1 = head;while(num!=p1->data && p1->next != NULL){p1 = p1->next;}if(num == p1->data){if(p1==head){head = head->next;head->pre = NULL;free(p1);}else if(p1->next == NULL){p1->pre->next = NULL;free(p1);}else{p1->next->pre = p1->pre;p1->pre->next = p1->next;}}elseprintf("\n%d could not been found",num);return head;}
//双链表插入节点dnode *insert(dnode *head,int num){dnode *p0,*p1;p1 = head;p0 = (dnode*)malloc(sizeof(dnode));p0->datas = num;while(p0->data>p1->data && p1->next!= NULL){p1 = p1->next;}if(p0->data<=p1->data){if(head==p1){p0->next = p1;p1->next = p0;head = p0;}else{p1->pre->next = p0;p0->next = p1;p0->pre = p1->pre;p1->next = p0;}}else{//比哪个都大的情况p1->next = p0;p0->next = p1;p0->next =NULL;}return head;}



0 0