我可以: 邀请好友来看>>
ZOL星空(中国) > 技术星空(中国) > C/C++星空(中国) > 高分问个小问题,绝对小,大家放心
帖子很冷清,卤煮很失落!求安慰
返回列表
签到
手机签到经验翻倍!
快来扫一扫!

高分问个小问题,绝对小,大家放心

110浏览 / 5回复

humanblue

humanblue

0
精华
25
帖子

等  级:Lv.5
经  验:4038
  • Z金豆: 0

    千万礼品等你来兑哦~快点击这里兑换吧~

  • 城  市:北京
  • 注  册:2008-07-22
  • 登  录:2014-01-05
发表于 2010-05-31 17:36:46
电梯直达 确定
楼主
首先声明,代码不短,但是问题很小,就其中的一个符号,大家也不需要全部看代码哈:
问题已经在代码旁注释出来了。

C/C++ code


//算法功能:在双向链表的第i个位置处插入一个新的数据元素e

#include <stdio.h>
#include <malloc.h>
#define OK 1;
#define ERROR 0;
typedef int Status;

//定义双向链表数据存储结构
typedef struct DulNode
{
    struct DulNode *prior;
    int data;
    struct DulNode *next;
}DulNode, *DuLinklist;

//打印双向链表元素
void print_Dulist(DuLinklist L)
{
    DuLinklist p;
    p = L->next;
    while(p != NULL)
    {
        printf("%d ", p->data);
        p = p->next;
    }
    printf("n");
}


//顺序输入数据元素,尾插法建立带头结点的双向链表
void creat_Dulist(DuLinklist &L)             //这个地方的"&"是干嘛的,我感觉不需要啊。。是引用吗?
{
    DuLinklist p, q;
    L = (DulNode*) malloc (sizeof(DulNode));  //建立链表头结点
    L->next = NULL;
    printf("请输入链表元素,Ctrl+Z结束,建立带头结点的双向链表:n");
    q = (DulNode*) malloc(sizeof(DulNode));
    scanf("%d", &(q->data));
    q->next = L->next;
    L->next = q;
    q->prior = L;
    p = (DulNode*) malloc (sizeof(DulNode));
    while((scanf("%d", &(p->data))) != EOF)  //按CTrl+Z组合键结束输入
    {
        p->next = q->next;
        q->next = p;
        p->prior = q;
        q = p;
        p = (DulNode*) malloc (sizeof(DulNode));
    }
}


//在双向链表中第i个结点之前插入新的元素e
Status ListInsert_DL(DuLinklist L, int i, int e)
{
    int j = 0;
    DulNode *s, *p;
    p = L;
    while(p && j < i-1)  //查找
    {
        p = p->next;
        j++;
    }
    if(!p || j >i-1)
        return ERROR;
    s = (DuLinklist) malloc (sizeof(DuLinklist));    //新建结点
    if(s == NULL)
        return ERROR;
    s->data = e;      //插入结点
    s->next = p->next;
    p->next->prior = s;
    p->next = s;
    s->prior = p;
    return OK;
}


int main()
{
    DuLinklist L;
    int i, e;
    creat_Dulist(L);
    printf("建立的双向链表为:n");
    print_Dulist(L);
    printf("请输入要插入的元素的位置i: ");
    scanf("%d", &i);
    printf("请输入要加入的元素的值: ");
    scanf("%d", &e);
    ListInsert_DL(L, i, e);
    printf("插入新元素的双向链表:n");
    print_Dulist(L);

    return 0;
}






void creat_Dulist(DuLinklist &L) //这个地方的"&"是干嘛的,我感觉不需要啊。。是引用吗?

liuheng1990

liuheng1990


精华

帖子

等  级:Lv.1
经  验:50
发表于 2010-09-09 17:13:53 5楼
不懂啊 才开始学习

kane0817

kane0817


精华

帖子

等  级:Lv.7
经  验:13527
发表于 2010-09-08 15:27:54 4楼
我觉得上面3位的回答足够解释你的问题了。。。

taoquanyi

taoquanyi


精华

帖子

等  级:Lv.1
经  验:4
发表于 2010-08-31 18:22:09 3楼
这是引用,一般需要传值或者修改时一般用引用或者指针,这个地方不能去掉取地址符,不然值就没办法回传。

咩咩叫的狼

咩咩叫的狼


精华

帖子

等  级:Lv.5
经  验:4013
发表于 2010-07-30 08:46:54 2楼
C里面 & 就是取地址的符号,也可以说是引用,就是直接更改此内存地址的东东


精华

帖子

等  级:Lv.1
经  验:100
发表于 2010-05-31 19:13:01 1楼
是引用,用引用的目的就是可以直接修改传进函数里面的实参,作用类似指针
高级模式
星空(中国)精选大家都在看24小时热帖7天热帖大家都在问最新回答

针对ZOL星空(中国)您有任何使用问题和建议 您可以 联系星空(中国)管理员查看帮助  或  给我提意见

快捷回复 APP下载 返回列表