int value;
#include <iostream> #include <stdio> #include <stdlib> template <typename T> typedef struct ListNode{ struct ListNode* prio; struct ListNode* next; T data; }LISTNODE; //在一个节点value之后插入节点data struct ListNode* Insert(ListNode* head,T value,T data){ ListNode* node=NULL; ListNode* node2=NULL; if(!head) return NULL; else{ node=head; while(node->data!=value){ node=node->next; } if(node==NULL) return NULL; else{ if(node->next){ node2->prio=node; node2->next=node->next; node2->data=data; node->next=node2; node->next->prio=node2; } else{ node2->prio=node; node2->next=NULL; node2->data=data; node->next=node2; } } } node=head; return node; } struct ListNode* deleteP(ListNode* head,T data){ if(head==NULL){ return NULL; } else{ ListNode* node=NULL; ListNode* node2=NULL; for(node=head;node!=NULL;node=node->next){ if(node->data==data && node->next!=NULL){ node->prio->next=node->next; node->next->prio=node->prio; } else if(node->data==data && node->next==NULL){ node->prio->next=NULL; } else return NULL; } } node=head; return head; }
template <typename ElemType> typedef struct DulNode { struct DulNode *prior; //前驱指针 ElemType data; //数据 struct DulNode *next; //后继指针 } DulNode, *DuLinkList; //----------------删除操作----------------------------- Status ListDelete_DuL(DuLinkList &L, int i, ElemType &e) { if (!(p = GetElemP_DuL(L, i))) return ERROR; e = p->data; p->prior->next = p->next; p->next->prior = p->prior; free(p); return OK; } //-----------------------插入操作--------------------- Status ListInsert_DuL(DuLinkList &L, int i, ElemType &e) { if (!(p = GetElemP_DuL(L, i))) return ERROR; DuLinkList *s; if (!(s = (DuLinkList)malloc(sizeof(DuLNode)))) return ERROR; s->data = e; s->prior = p->prior; p->prior->next = s; s->next = p; p->prior = s; return OK; }