#include<iostream> #include<cstdlib> #include <stdio.h> using namespace std; typedef struct Node *PNode; typedef struct Node { int reg; int date; PNode previous; PNode next; }Node; Node *head; typedef struct { PNode head; PNode tail; int size; }DList; DList *a; int init_list(); int insert_follow_reg(int reg,int value); int delete_follow_reg(int reg); int reload_follow_reg(int reg,int value); void print_list(); int main() { init_list(); insert_follow_reg(9,0); //delete_follow_reg(8); reload_follow_reg(9,3); print_list(); } int init_list() { head=new(Node); head->next=NULL; head->previous=NULL; a=new(DList); a->head=head; a->tail=NULL; a->size=0; } int insert_follow_reg(int reg,int value) { Node *p; p=new(Node); p->date=value; p->reg=reg; if(head->next==NULL) { head->next=p; p->next=NULL; p->previous=head; a->tail=p; a->size++; } else { if(p->reg<head->next->reg) { p->next=head->next; head->next->previous=p; head->next=p; p->previous=head; } else { int cnt=0; for(Node *q=head->next;q!=a->tail;q=q->next) { if(p->reg>q->reg && p->reg<q->next->reg) { p->next=q->next; q->next->previous=p; q->next=p; p->previous=q; cnt=1; a->size++; break; } } if(cnt==0) { if(a->tail->reg < p->reg) { p->next=a->tail->next; a->tail->next=p; p->previous=a->tail; a->tail=p; a->size++; } } } } } int delete_follow_reg(int reg) { int cnt=0; for(Node *q=head->next;q!=NULL;q=q->next) { if(q->reg==reg) { cnt=1; q->previous->next=q->next; q->next->previous=q->previous; } } if(cnt==0) { printf("没有此序号 "); } } int reload_follow_reg(int reg,int value) { int cnt=0; for(Node *q=head->next;q!=NULL;q=q->next) { if(q->reg==reg) { cnt=1; q->date=value; } } if(cnt==0) cout<<"没有此序号"<<endl; } void print_list() { for(Node *q=head->next;q!=NULL;q=q->next) { cout<<q->reg<<" "<<q->date<<endl; //cout<<a->tail->reg<<endl; } printf("a->size = %d ",a->size); }