双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点, 一般我们都构造双向循环链表。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | void CreateDlistR (DLNode *&L, int a[], int n){ DLNode *s,*r; int i; L = (DLNode*)malloc(sizeof(DLNode)); L->next = NULL; r = L; //和单链表一样r始终指向终端结点,开始头结点也是尾结点 for(i = 1; i< = n; i++){ s = (DLNode*)malloc(sizeof(DLNode)); //创建新结点s->data = a[i]; /*下边3句将s插入在L的尾部并且r指向s,s->prior = r;这一句是和建立单链表不同的地方。*/ r->next = s; s->prior = r; r = s; } r->next = NULL; } |