标签:
#include<stdio.h> #include<stdlib.h> typedef int ElemType; struct Node{ Node *next; Node *prior; ElemType data; }; void CreateList(Node*&L) { L = (Node*)malloc(sizeof(Node)); if(!L) exit(-2); L->next = L; L->prior = L; L->data = 0; } void InsertList(Node*&L,int n,ElemType e)//较之前版本 改为插入到任意位置 { Node *p = L; for(int i=0;i<n-1;++i) { p=p->next; } Node *s = NULL; s=(Node*)malloc(sizeof(Node)); s->data = e; p->prior->next = s; s->prior = p->prior; p->prior = s;s->next = p; ++(L->data); } void DeleteList(Node*&L,int n) { Node*p = L; if(n<1||n>L->data) exit(-2); for(int i = 0;i < n;i++)//L是头结点,不能被销毁 { p=p->next; } p->prior->next = p->next;p->next->prior = p->prior; free(p); --(L->data); } void ShowList(Node*&L) { Node *p = L; while(p->next!=L){ printf(">%d\t",(p)->data); p=p->next; if(p->next == L) { printf(">%d\t",(p)->data); } } printf("\n"); } int main() { Node *N1; CreateList(N1); InsertList(N1,1,1); ShowList(N1); InsertList(N1,1,2); ShowList(N1); InsertList(N1,1,3); ShowList(N1); InsertList(N1,1,4); ShowList(N1); DeleteList(N1,1); ShowList(N1); DeleteList(N1,2); ShowList(N1); }
有第一个L头结点的存在,导致后面的删除函数不能在p指向L时进行销毁。
完善不够 权当备份。
标签:
原文地址:http://www.cnblogs.com/minemine/p/5244571.html