| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 751 人关注过本帖
标题:输出问题?
只看楼主 加入收藏
henji
Rank: 1
等 级:新手上路
帖 子:227
专家分:0
注 册:2009-4-19
结帖率:38.67%
收藏
已结贴  问题点数:20 回复次数:8 
输出问题?
#include "stdio.h"
#include "stdlib.h"
#define     OK      1
#define        ERROR    -1
#define     NULL   0

typedef        int ElemType;  
typedef     int Status;
typedef struct node   
{
    int data;
    struct node *prior;
    struct node *next;
}Lnode,*DuLinklist;

void creat(DuLinklist &L)
{
    DuLinklist p,q;
    int i;
    L=(DuLinklist)malloc(sizeof(Lnode));
    L->next=L;
    L->prior=L;
    q=L;
    for(i=1;i<=5;i++)
    {
        p=(DuLinklist)malloc(sizeof(Lnode));
        printf("input number:\n");
        scanf("%d",&p->data);
        p->next=L->prior;
        p->prior=q;
        q->next=p;
        q=p;
    }
}

void print(DuLinklist L)
{
    DuLinklist p;
    p=L->next;
    while(p != L)
    {
        printf("%5d",p->data);
        p=p->next;
    }
    printf("\n");
}

Status insert(DuLinklist &L,int i,ElemType e)
{
    DuLinklist p;
    DuLinklist s;
    p=L->next;
    int j=0;
    int m=5;
        
    if(i<1)
    {
        return ERROR;
    }
    if(i<=m&&i>=1)
    {
        while(p&&j<i-1)
        {
            p=p->next;
            ++j;
        }
        s=(DuLinklist)malloc(sizeof(Lnode));
        s->data=e;
        s->prior=p->prior;
        p->prior->next=s;
        s->next=p;
        p->prior=s;
    }
    if(i>m)
    {
        while(p&&j<i-1)
        {
            p=p->next;
            ++j;
        }
        s=(DuLinklist)malloc(sizeof(Lnode));
        s->data=e;
        s->prior=L->prior;
        L->prior->next=s;
        s->next=L;
        L->prior=s;
    }
    return OK;
}

Status Delete(DuLinklist &L,int i,ElemType e)//例如我输入1,2,3,4,5,要将1插入到尾节点,为什么输出只有的结果为1而不是1,2,3,4,5,1?
{
    DuLinklist p;
    p=L->next;
    int j=0;
    while(p&&j<i-1)
    {
        p=p->next;
        ++j;
    }
    if(!(p->next)||j>i-1)
    {   
        return ERROR;
    }
    e=p->data;
    p->prior->next=p->next;
    p->next->prior=p->prior;
    free(p);
    return OK;
}

int main(int argc, char* argv[])
{   
    DuLinklist L;
    int i=0;
    int e=0;
    creat(L);
    print(L);
    printf("\n");
    printf("input weizhi:\n");
    scanf("%d",&i);
    printf("input insert_number:\n");
    scanf("%d",&e);
    insert(L,i,e);
    print(L);
    printf("input delete number:\n");
    scanf("%d",&i);
    Delete(L,i,e);
    print(L);
    return 0;
}
搜索更多相关主题的帖子: 输出 
2009-10-18 12:41
henji
Rank: 1
等 级:新手上路
帖 子:227
专家分:0
注 册:2009-4-19
收藏
得分:0 
#include "stdio.h"
#include "stdlib.h"
#define     OK      1
#define        ERROR    -1
#define     NULL   0
 
typedef        int ElemType;   
typedef     int Status;
typedef struct node     
{
    int data;
    struct node *prior;
    struct node *next;
}Lnode,*DuLinklist;
 
void creat(DuLinklist &L)
{
    DuLinklist p,q;
    int i;  
    L=(DuLinklist)malloc(sizeof(Lnode));
    L->next=L;
    L->prior=L;
    q=L;
    for(i=1;i<=5;i++)
    {
        p=(DuLinklist)malloc(sizeof(Lnode));
        printf("input number:\n");
        scanf("%d",&p->data);
        p->next=L->prior;
        p->prior=q;
        q->next=p;
        q=p;
    }
}
 
void print(DuLinklist L)
{
    DuLinklist p;
    p=L->next;
    while(p != L)
    {
        printf("%5d",p->data);
        p=p->next;
    }
    printf("\n");
}
 
Status insert(DuLinklist &L,int i,ElemType e) //插入函数,例如我输入1,2,3,4,5,要将1插入到尾节点,为什么输出只有的结果为1而不是1,2,3,4,5,1?

{
    DuLinklist p;
    DuLinklist s;
    p=L->next;
    int j=0;  
    int m=5;
         
    if(i<1)
    {
        return ERROR;
    }
    if(i<=m&&i>=1)
    {
        while(p&&j<i-1)
        {
            p=p->next;
            ++j;
        }
        s=(DuLinklist)malloc(sizeof(Lnode));
        s->data=e;
        s->prior=p->prior;  
        p->prior->next=s;
        s->next=p;
        p->prior=s;
    }
    if(i>m)
    {
        while(p&&j<i-1)
        {
            p=p->next;
            ++j;
        }
        s=(DuLinklist)malloc(sizeof(Lnode));
        s->data=e;
        s->prior=L->prior;
        L->prior->next=s;
        s->next=L;
        L->prior=s;
    }
    return OK;
}
 
Status Delete(DuLinklist &L,int i,ElemType e{
    DuLinklist p;
    p=L->next;
    int j=0;  
    while(p&&j<i-1)
    {
        p=p->next;
        ++j;
    }
    if(!(p->next)||j>i-1)
    {     
        return ERROR;
    }
    e=p->data;
    p->prior->next=p->next;
    p->next->prior=p->prior;
    free(p);
    return OK;
}
 
int main(int argc, char* argv[])
{     
    DuLinklist L;
    int i=0;
    int e=0;
    creat(L);
    print(L);
    printf("\n");
    printf("input weizhi:\n");
    scanf("%d",&i);
    printf("input insert_number:\n");
    scanf("%d",&e);
    insert(L,i,e);
    print(L);
    printf("input delete number:\n");
    scanf("%d",&i);
    Delete(L,i,e);
    print(L);
    return 0;
}
2009-10-18 12:53
henji
Rank: 1
等 级:新手上路
帖 子:227
专家分:0
注 册:2009-4-19
收藏
得分:0 
麻烦帮忙解答一下啊?
2009-10-18 14:18
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:10 
你写的程序是个乱》想干什么的,矛盾。

离恨恰如春草,更行更远还生。
2009-10-18 15:52
henji
Rank: 1
等 级:新手上路
帖 子:227
专家分:0
注 册:2009-4-19
收藏
得分:0 
这是一个双向链表,要实现插入的功能?
2009-10-18 16:12
無邪的睡脸
Rank: 2
等 级:等待验证会员
威 望:1
帖 子:344
专家分:13
注 册:2007-9-11
收藏
得分:10 
有人会看如此长篇大论吗?反正我不会
2009-10-18 17:12
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:0 
  #include "stdio.h"  
#include "stdlib.h"  
#define     OK      1  
#define        ERROR    -1  
#define     NULL   0  
typedef        int ElemType;   
typedef     int Status;  
typedef struct node      
{  
    int data;  
    struct node *prior;  
    struct node *next;  
}Lnode,*DuLinklist;  
  
Lnode *creat(DuLinklist L)  
{  
    DuLinklist p,q;  
    int i;   
    L=(DuLinklist)malloc(sizeof(Lnode));  
    q=L;  
    for(i=1;i<=5;i++)  
    {  
        p=(DuLinklist)malloc(sizeof(Lnode));  
        printf("input number:\n");  
        scanf("%d",&p->data);  
        p->next=NULL;  
        p->prior=q;  
        q->next=p;  
        q=p;  
    }  
    L->prior=p;  
     p->next=L;  
     return L;  
}  
  
void print(DuLinklist L)  
{  
    DuLinklist p;  
    p=L->next;  
    while(p!=L)  
    {  
        printf("%5d",p->data);  
        p=p->next;  
    }  
    printf("\n");  
}  
  
Status *insert(DuLinklist L,int i,ElemType e)  
{  
    DuLinklist p;  
    DuLinklist s;  
  
    int j=0;   
    int m=5;  
      p=L->next;     
    if(i<1)  
    {  
        exit(0);
    }  
    if(i<=m+1&&i>=1)  
    {  
        while(p&&j<i-1)  
        {  
            p=p->next;  
            ++j;  
        }  
        s=(DuLinklist)malloc(sizeof(Lnode));  
        s->data=e;  
        s->prior=p->prior;   
        p->prior->next=s;  
        s->next=p;  
        p->prior=s;  
    }  
 /*   if(i>m)  
    {  
        s=(DuLinklist)malloc(sizeof(Lnode));  
        s->data=e;  
        s->prior=L->prior;  
        L->prior->next=s;  
        s->next=L;  
        L->prior=s;  
    }        */  
    return L;  
}  
  
Status *Delete(DuLinklist L,int i)  
{  
    DuLinklist p;  
  
    int m=5;  
    int j=0;  
     p=L->next;  
    while(p&&j<i-1)  
    {  
        p=p->next;  
        ++j;  
    }  
    if(i<1)  
    {  
        exit(0);  
    }  
    if(i<=m+1&&i>=1)  
    {  
  
        p->prior->next=p->next;  
        p->next->prior=p->prior;  
        free(p);  
    }  
 /*   if(i>m)  
    {  
        e=p->data;  
        p->prior->next=p->next;  
        p->next->prior=p->prior;  
        free(p);  
    }        */  
        return L;  
}  
  
Status *find(DuLinklist L,int i)  
{  
    DuLinklist p;  
  
    int j=0;  
     p=L->next;  
    while(p&&j<i-1)  
    {  
        p=p->next;  
        j++;  
    }  
    printf("%d",p->data);  
    return L;  
}  
int main(int argc, char* argv[])  
{  
      
    DuLinklist L;  
    DuLinklist p;  
    DuLinklist q;  
    int value;  
    int i=0;  
    int e=0;  
    L=creat(L);  
    print(L);  
    printf("\n");  
    printf("input weizhi:\n");  
    scanf("%d",&i);  
    printf("input insert_number:\n");  
    scanf("%d",&e);  
    L=insert(L,i,e);  
    print(L);  
    printf("\n");  
    printf("input delete_address:\n");  
    scanf("%d",&i);  
    L=Delete(L,i);  
    print(L);  
    printf("input search_i:\n");  
    scanf("%d",&i);  
    L=find(L,i);  
  
    return 0;  
}  
兄弟 ,这个给你参考一下,你看看!有些地方可以删的!你自己在仔细看看
最上面那个没分你发了好几次了,我记得那个有分的!

离恨恰如春草,更行更远还生。
2009-10-20 19:45
henji
Rank: 1
等 级:新手上路
帖 子:227
专家分:0
注 册:2009-4-19
收藏
得分:0 
int main(int argc, char* argv[])   
{   
      
    DuLinklist L;   
    DuLinklist p;   
    DuLinklist q;   
    int value;   
    int i=0;   
    int e=0;   
    L=creat(L);   
    print(L);   
    printf("\n");   
    printf("input weizhi:\n");   
    scanf("%d",&i);   
    printf("input insert_number:\n");   
    scanf("%d",&e);   
    L=insert(L,i,e);   //这个L是insert函数返回的头指针吗?
    print(L);   
    printf("\n");   
    printf("input delete_address:\n");   
    scanf("%d",&i);   
    L=Delete(L,i);   
    print(L);   
    printf("input search_i:\n");   
    scanf("%d",&i);   
    L=find(L,i);   
   
    return 0;   
}  
2009-10-20 22:48
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:0 
对,L就是调用子函数后返回的指针,按照你的那种做法链表的头指针没有返回,在主函数中指针L是没有指链表结构的》

离恨恰如春草,更行更远还生。
2009-10-21 12:55
快速回复:输出问题?
数据加载中...
 
   



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

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