| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 485 人关注过本帖
标题:双向链表创建
只看楼主 加入收藏
feigechen7
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-11-4
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:5 
双向链表创建
/*

*/

#include<stdio.h>
#include<stdlib.h>

typedef struct node
{
    int data;
    struct node* next;
    struct node* prior;
}DLinklist;

bool initList(DLinklist* head);
bool createList(DLinklist* head,int n);
int main()
{
    DLinklist* head=NULL;
    DLinklist* p,*q;
    int n;
    initList(head);
    printf("请输入链表长度:");
    scanf("%d",&n);
    createList(head,n);
   
    return 0;
}

bool initList(DLinklist* head)      //初始化链表
{
    head=(DLinklist*)malloc(sizeof(DLinklist));
    if(!head)
        return false;
    head->next=head;
    head->prior=head;
    return true;
}

bool createList(DLinklist* head,int n)//创建链表
{
    DLinklist* p,*q;
    p=head;
    int i,e;
    for(i=1;i<=n;i++)
    {
        
        printf("请输入第%d个节点的数据",i);
        scanf("%d",&e);
        q=(DLinklist*)malloc(sizeof(DLinklist));
        if(!q)
        {
            printf("error");
            return false;
        }
        q->data=e;
        q->next=p->next;
        p->next=q;
        q->prior=p;
        
        q->next=NULL;
        
        p=q;

    }
    return true;
}
输入元素的时候,总是输完一个数据后就死了,哪里有问题啊,新人积分不多
搜索更多相关主题的帖子: next include return 
2012-11-04 12:26
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
非法 访问内存的结构 导致的               


指针用的不熟练

  DLinklist* head=NULL;

  initList(head);
这两句结合起来就是错误!
2012-11-04 14:42
feigechen7
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-11-4
收藏
得分:0 
回复 2楼 寒风中的细雨
问题解决了,你能解释一下吗
2012-11-04 19:21
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:10 
回复 3楼 feigechen7
问题解决了  不清楚原因?
2012-11-05 15:00
feigechen7
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-11-4
收藏
得分:0 
回复 4楼 寒风中的细雨
对,不怎么清楚
2012-11-05 23:23
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
    DLinklist* head=NULL;
    DLinklist* p,*q;
    int n;
    initList(head);
没有改变head的值      

这里直接点的改法是  head = initList(head);     把改变后的值返回过来
2012-11-06 08:44
快速回复:双向链表创建
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022256 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved