工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 2918|回复: 10

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

[复制链接]
发表于 2007-1-10 00:46 | 显示全部楼层 |阅读模式
在做课程设计,要求用双向链表才可以良以上的成绩,但是书上完全没有关于双向链表的介绍,老师也没说过。
上网查又只能查到对双向链表的操作,但查不到其定义,我想知道什么叫双向链表。
是不是指针域里除了一个指向下一节点的指针还有一个指向上一节点的指针??



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

[ 本帖最后由 Ja5oN 于 2007-1-10 00:49 编辑 ]
发表于 2007-1-10 01:13 | 显示全部楼层
你的理解没错啊。。
回复

使用道具 举报

发表于 2007-1-10 10:01 | 显示全部楼层
楼主是已经知道单链表,那双链表就是比单链表多了一个指向前驱的指针。

单链表的结构体:

  1. struct NODE
  2. {
  3.       int e;
  4.       struct NODE*next;
  5. };
复制代码

则双链表的结构:

  1. struct NODE
  2. {
  3.       int e;
  4.       struct NODE*pre;
  5.       struct NODE*next;
  6. };
复制代码


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

使用道具 举报

发表于 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[30];
    char name[30];
    float *pScore;
    struct student *next;
}stu;

extern int subjectAccount;                /*成绩个数*/
extern long studentAccount;               /*总人数*/
extern char (*subjectName)[30];            /*课程名称    怀疑这种存储方式会出问题*/
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 编辑 ]
回复

使用道具 举报

发表于 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
回复

使用道具 举报

发表于 2007-1-10 14:00 | 显示全部楼层
“良以上”就是优嘛……
个人觉得那老师不错的……CYH
回复

使用道具 举报

发表于 2007-1-10 14:03 | 显示全部楼层
呵呵
还是师兄幽默~
自愧不如
回复

使用道具 举报

 楼主| 发表于 2007-1-10 17:08 | 显示全部楼层
原帖由 小I 于 2007-1-10 13:05 发表
楼主要学学用百度和GOOGLE等搜索工具呀

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

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

下面是我做的 ...

你做好拉!!我才刚开始,之前打机打太多了
回复

使用道具 举报

发表于 2007-1-10 17:38 | 显示全部楼层
楼上认错人了吧……
回复

使用道具 举报

 楼主| 发表于 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

这一段是什么?我怎么一点都不懂?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2025-8-31 06:21

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表