双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。
/********************************************************************** * Copyright (c)2015,WK Studios * Filename: Tw_Node.c * Compiler: GCC,VS,VC6.0 win32 * Author:WK * Time: 2015 27 4 ************************************************************************/ #include <stdio.h> #include <stdlib.h> #define N 10 typedef struct node { int data; struct node *llink,*rlink; }stud; stud * creat(int n) { stud *p,*h,*s; int i; if((h=(stud *) malloc (sizeof(stud)))==NULL) { printf("不能分配内存空间!"); exit(0); } h->data=0; h->llink=NULL; h->rlink=NULL; p=h; for(i=1;i<=n;i++) { if((s= (stud *) malloc(sizeof(stud)))==NULL) { printf("不能分配内存空间!"); exit(0); } p->rlink=s; s->data=i; s->llink=p; s->rlink=NULL; p=s; } h->llink=s; p->rlink=h; return(h); } void print(stud *h) { stud *p; p=h; printf("数据信息为:\n"); while(p->rlink!=h) { printf("%d ",p->data); p=p->rlink; } printf("%d",h->llink->data); printf("\n"); } int main() { int number; stud *head; number=N; head=creat(number); print(head); return 0; }
时间: 2024-10-31 10:33:57