Ja5oN 发表于 2007-1-10 00:46

师兄师姐可以向我讲一下什么是双向链表吗?

在做课程设计,要求用双向链表才可以良以上的成绩,但是书上完全没有关于双向链表的介绍,老师也没说过。
上网查又只能查到对双向链表的操作,但查不到其定义,我想知道什么叫双向链表。
是不是指针域里除了一个指向下一节点的指针还有一个指向上一节点的指针??



顺便bs一下老师,布置作业不考虑我们的实际情况!

[ 本帖最后由 Ja5oN 于 2007-1-10 00:49 编辑 ]

brilon 发表于 2007-1-10 01:13

你的理解没错啊。。

MJOfPowerwind 发表于 2007-1-10 10:01

楼主是已经知道单链表,那双链表就是比单链表多了一个指向前驱的指针。

单链表的结构体:

struct NODE
{
      int e;
      struct NODE*next;
};

则双链表的结构:

struct NODE
{
      int e;
      struct NODE*pre;
      struct NODE*next;
};


对链表的操作中,双链表就比单链表多了个pre指针要指向前一个节点。

小I 发表于 2007-1-10 13:05

楼主要学学用百度和GOOGLE等搜索工具呀

学习要举一反三(很明显你也想到了双向链表是什么样的)

为什么要用双向链表?
因为这次课程设计的如果用单向链表的话,
有很多数据操作会很曲折

下面是我做的设计的头文件:
lajistu.h(laji for 垃圾因为觉得做得实在是很垃圾……)

#ifndef lajistu_h
#define lajistu_h
#include <stdio.h>
#include <dos.h>
#include <stdlib.h>
typedef struct xy{int x;int y;}posxy;


/*以下两行为引入floating format以免TC编译器故作聪明不引入浮点数据类型*/
extern unsigned _floatconvert;
#pragma extref _floatconvert
/***********
以下是全局共用的
数据结构
没有用双向链表,因为教材里还学教到,设计时落入了这样的思维:没教到的不会考察吧,结果做了好大一部分才发觉用双向链表可以少好多麻烦
**************/
typedef struct student{
    char id;
    char name;
    float *pScore;
    struct student *next;
}stu;
extern int subjectAccount;                /*成绩个数*/
extern long studentAccount;               /*总人数*/
extern char (*subjectName);            /*课程名称    怀疑这种存储方式会出问题*/
extern char curFileName[];            /*当前打开的文件名称*/
extern char *getStudentName(FILE*fp);   /**/
extern char space[];         /**/
/********
以下是文件
操作函数memToFile
用的宏
*********/
#define TEXT   1
#define BINARY 2
void memToFile(char *mem2save,stu *head,int mode);
void myPrint(stu *,int);
void search(char *);
extern stu *fileToMem(char *file2mem);
int GetKey();
extern stu *dataHead;
extern stu *dataTail;

/* 以下是数据文件信息:
   科目名称,总科目数,总人数的偏移量(由文件尾起)

注意:
   使用时要加负号!!*/
#define offsetAccountStu (long)(sizeof(long))
#define offsetAccountSub (long)(sizeof(int)+offsetAccountStu)
#define offsetStringSub(long)(n*30*sizeof(char)+offsetAccountSub)

/*全局使用的子窗口位置,在drawWin定义*/
extern posxy suba,subb;


/*drawWin.c*/
#define ULEFT2   '\311'
#define UM2      '\315'
#define URIGHT2'\273'
#define MM2      '\272'
#define DLEFT2   '\310'
#define DRIGHT2'\274'
#define COR2   '\316'
#define COR2LRD'\313'
#define COR2LRU'\312'
#define COR2UDL'\271'
#define COR2UDR'\314'
#define TX       1
#define TY       0

#endif






PS:我的课程设计没用双向链表,不过得了“良以上的成绩”

[ 本帖最后由 iptton 于 2007-1-10 16:15 编辑 ]

小I 发表于 2007-1-10 13:10

再PS:楼主对这个定义有兴趣可以先去找数据结构的书看

子丹 发表于 2007-1-10 13:58

楼上的师兄好谦虚
看来制作了图形界面呢
老师没给你评优应该bs~





ps:说话依据参见——
/*drawWin.c*/
#define ULEFT2   '\311'
#define UM2      '\315'
#define URIGHT2'\273'
#define MM2      '\272'
#define DLEFT2   '\310'
#define DRIGHT2'\274'
#define COR2   '\316'
#define COR2LRD'\313'
#define COR2LRU'\312'
#define COR2UDL'\271'
#define COR2UDR'\314'
#define TX       1
#define TY       0

小I 发表于 2007-1-10 14:00

“良以上”就是优嘛……
个人觉得那老师不错的……CYH

子丹 发表于 2007-1-10 14:03

呵呵
还是师兄幽默~
自愧不如

Ja5oN 发表于 2007-1-10 17:08

原帖由 小I 于 2007-1-10 13:05 发表
楼主要学学用百度和GOOGLE等搜索工具呀

学习要举一反三(很明显你也想到了双向链表是什么样的)

为什么要用双向链表?
因为这次课程设计的如果用单向链表的话,
有很多数据操作会很曲折

下面是我做的 ...
你做好拉!!我才刚开始,之前打机打太多了

iptton 发表于 2007-1-10 17:38

楼上认错人了吧……

Ja5oN 发表于 2007-1-10 21:01

认错了
看到是   "新生报到“理所当然地以为和我一样是新生!
#define ULEFT2   '\311'
#define UM2      '\315'
#define URIGHT2'\273'
#define MM2      '\272'
#define DLEFT2   '\310'
#define DRIGHT2'\274'
#define COR2   '\316'
#define COR2LRD'\313'
#define COR2LRU'\312'
#define COR2UDL'\271'
#define COR2UDR'\314'
#define TX       1
#define TY       0

#endif
这一段是什么?我怎么一点都不懂?
页: [1]
查看完整版本: 师兄师姐可以向我讲一下什么是双向链表吗?