某同学写出的一个有关双链表的函数 PDoubleList creatNullList(void) { PDoubleList llist; llist = (PDoubleList)malloc(sizeof(struct DoubleList)); if(llist != NULL) { llist->head = (PDoubleNode)malloc(sizeof(struct DoubleNode)); llist->rear = (PDoubleNode)malloc(sizeof(struct DoubleNode)); llist->head->rlink = llist->rear; llist->rear->llink = llist->head; llist->head->llink = NULL; llist->rear->rlink = NULL; } return (llist); } 一些小问题: 1,应该把 struct DoubleList 和 struct DoubleNode 定义为类型,程序可以简单一些,例如定义为 DList 和 DNode 2,return 后面的表达式不需要括号 修改后的函数简单些: PDoubleList creatNullList(void) { PDoubleList llist; llist = (PDoubleList)malloc(sizeof(DList)); if(llist != NULL) { llist->head = (PDoubleNode)malloc(sizeof(DNode)); llist->rear = (PDoubleNode)malloc(sizeof(DNode)); llist->head->rlink = llist->rear; llist->rear->llink = llist->head; llist->head->llink = NULL; llist->rear->rlink = NULL; } return llist; } 这个函数做的是什么?请想想函数建立起的是什么样的数据结构,画个图看看。 问题:在写这个程序时应该给出一个清晰的想法,使辅导老师知道你准备建立的时什么样的结构。我估计,该同学可能时想建立一种带有“头结点”和“尾结点”的双向链接表。也不知对不对。