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

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

110浏览 / 0回复

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) //这个地方的"&"是干嘛的,我感觉不需要啊。。是引用吗?
高级模式
星空(中国)精选大家都在看24小时热帖7天热帖大家都在问最新回答

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

快捷回复 APP下载 返回列表