| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 695 人关注过本帖
标题:关于链表的输入问题,输入错误,编译没错误的
只看楼主 加入收藏
NeQhk
Rank: 2
等 级:论坛游民
威 望:1
帖 子:164
专家分:85
注 册:2014-7-19
结帖率:69.23%
收藏
已结贴  问题点数:2 回复次数:10 
关于链表的输入问题,输入错误,编译没错误的
#include <stdio.h>
#include <malloc.h>
typedef char* ElemType ;
typedef struct A {
    ElemType node;
    struct A *next;
}listnode;

int  Insert (listnode * L,ElemType e)
{
    listnode *p,*s;
    p=L;
    s=(listnode *)malloc( sizeof (listnode));
    if (!s)
    return 0;
    s->node=e;
    s->next=p->next;
    p->next=s;
    return 1;
}

void creat2(listnode* L)
{
    L=(listnode *)malloc (sizeof(listnode));
    L->next=NULL;
}
void print (listnode *L1)
{
    listnode  *p;
    p=L1;
    while (p!=NULL)
    {
        printf ("%d",p->node);
        p=p->next;
    }
}
int main()
{
      listnode  *L1=NULL,*L2=NULL;
      int n,i;
      char *a[30];
      printf ("输入A链表");
      creat2(L1);
      scanf("%d\n",&n);
      for(i=0;i<n;i++)
      {
       scanf("%c",&a[i]);
      }
      for(i=0;i<n;i++)
      {
            Insert(L1,a[i]);
      }
       print(L1);
   return 0;
}

怎么处理好

[ 本帖最后由 NeQhk 于 2015-3-22 15:27 编辑 ]
搜索更多相关主题的帖子: return include 
2015-03-22 15:25
n0noper
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:39
专家分:159
注 册:2015-3-21
收藏
得分:2 
#include <stdio.h>
#include <malloc.h>
typedef char* ElemType ;
typedef struct A {
    ElemType node;
    struct A *next;
}listnode;

int  Insert (listnode * L,ElemType e)
{
    listnode *p,*s;
    p=L;
    s=(listnode *)malloc( sizeof (listnode));
    s->next = NULL;

    if (!s)
        return 0;
    s->node=e;
    s->next=p->next;
    p->next=s;
    return 1;
}

void creat2(listnode *L)
{
    listnode *L1=(listnode *)malloc (sizeof(listnode));
    L1->next=NULL;
    *L = *L1;
}
void print (listnode *L1)
{
    listnode  *p;
//    p=L1;    //既然你第一个节点没用,那就别胡乱指
    p = L1->next;
    while (p!=NULL)
    {
//        printf ("%d ",p->node);
        printf("%s ", p->node);
        p=p->next;
    }
}
int main()
{
//    listnode  *L1=NULL,*L2=NULL;
    listnode L1;
    int n,i;
//    char *a[30];
    char a[30][30];        

//    printf ("输入A链表");
    printf("请输入链表元素个数: ");

//    creat2(L1);
    creat2(&L1);

//    scanf("%d\n",&n);
    scanf("%d",&n);
   
    for(i=0;i<n;i++)
    {
//        scanf("%c",&a[i]);    //指针不可以这么输入赋值
        scanf("%s", a[i]);
    }
   
    for(i=0;i<n;i++)
    {
//        Insert(L1,a[i]);   
        Insert(&L1, a[i]);
    }
        
//    print(L1);
    print(&L1);

    return 0;
}

未经同意修改代码,希望见谅。有什么问题再讨论。

不骄不躁,不卑不亢;虚怀若谷,宠辱不惊。
2015-03-22 17:36
NeQhk
Rank: 2
等 级:论坛游民
威 望:1
帖 子:164
专家分:85
注 册:2014-7-19
收藏
得分:0 
能不能再给看一个完整的代码?
多加了一个并集的操作进去了。。
2015-03-22 18:04
NeQhk
Rank: 2
等 级:论坛游民
威 望:1
帖 子:164
专家分:85
注 册:2014-7-19
收藏
得分:0 
回复 3楼 NeQhk
可以的话我发一下代码,,其他部分都一样
就是并集与主函数衔接的时候我处理得不好
2015-03-22 18:06
n0noper
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:39
专家分:159
注 册:2015-3-21
收藏
得分:0 
回复 4楼 NeQhk
回复我,或者其他途径 给个提示,不然我以为你没有回复。

不骄不躁,不卑不亢;虚怀若谷,宠辱不惊。
2015-03-22 22:47
NeQhk
Rank: 2
等 级:论坛游民
威 望:1
帖 子:164
专家分:85
注 册:2014-7-19
收藏
得分:0 
回复 5楼 n0noper
我现在上课?回去用电脑给你代码
2015-03-23 14:01
NeQhk
Rank: 2
等 级:论坛游民
威 望:1
帖 子:164
专家分:85
注 册:2014-7-19
收藏
得分:0 
可以联系我啊

[此贴子已经被作者于2017-8-9 09:48编辑过]

2015-03-23 18:25
NeQhk
Rank: 2
等 级:论坛游民
威 望:1
帖 子:164
专家分:85
注 册:2014-7-19
收藏
得分:0 
#include <stdio.h>
#include <malloc.h>
#include<string.h>
#define OK 1
#define ERROR 0
typedef char* ElemType ;
typedef struct node {
    ElemType node ;
    struct node *next;
}listnode,*linklist;

void print (linklist L1)
{
    listnode  *p;
    p=L1;
    while (p!=NULL)
    {
        printf ("%d",p->node);
        p=p->next;
    }
}
int  location (linklist L,ElemType e)
{
    listnode   *p;
    p=L;
    while (  p && p->node!=e  )
   {
         p=p->next;
   }
    if (p->node==e)
    {
        return OK;
    }
     return ERROR;
}
void Insert (linklist L,ElemType e)
{
    listnode *p,*s;
    p=L;
    s=(linklist)malloc( sizeof (linklist ));
    if (!s)
    return 0;
    s->node=e;
    s->next=p->next;
    p->next=s;
    return OK;
}
void creat2(linklist L)
{
    L=(linklist)malloc (sizeof(linklist));
    L->next=NULL;
}
linklist bingji (linklist A,linklist B)
{
    linklist L3;
    ElemType e;
    listnode *p1,*p2,*p3;
    creat2(L3);
    p1=A->next;
    p2=B->next;
    p3=L3;
    while (p1)
    {
        e=(ElemType)malloc (sizeof (ElemType ));
        strcpy (e,p1->node);
        if (Insert (L3,e)!=OK)
            return 0;
        p3=p3->next;
        p1=p1->next;
    }
    while (p2)
    {
        if ( location(A,p2->node)==0)
        {
        e=(ElemType )malloc (sizeof (ElemType));
            strcpy (e,p2->node);
            if (Insert (L3,e)==OK)
                 p3=p3->next;
        }
        p2=p2->next;
    }
    return L3;
}
int main()
{
      linklist L1,L2,L4;
      int n,m,i;
      printf ("输入A链表");
      creat2(L1);
      scanf("%d\n",&n);
      for(i=0;i<n;i++)
      {
       scanf("%d",L1->node);
      }
       printf ("\n");
      printf ("输入B链表");
         scanf("%d\n",&m);
         for (i=0;i<m;i++)
         {
         scanf("%d",L2->node );
         }
         printf ("\n");
      creat2(L2);
      
      L4=bingji (L1,L2);
      while (L4)
      {
          printf ("%d",L4->node );
          L4=L4->next;
      }
      return 0;
}
2015-03-23 18:25
n0noper
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:39
专家分:159
注 册:2015-3-21
收藏
得分:0 
你的代码如果修改不方便(其实是看着蛋痒),我自己写了一个,你好好比较一下,急着回家,时间不是很充裕,将就着看。有什么问题 再讨论。同时问一下:怎么知道自己回复的帖子有关于自己的新的回复?没有短消息啊,不是很懂··
程序代码:
#include <stdio.h>
#include <malloc.h>
#include <string.h>

typedef    char* ElemType;
typedef    struct Node{
    ElemType node;
    struct Node *next;
}ListNode, *LinkList;

void Create(LinkList *pList)    //链表创建,注意 理解传参的类型,好好理解指针
{
    *pList = (LinkList)malloc(sizeof(ListNode));
    (*pList)->next = NULL;
}

void Insert(LinkList pList, ElemType e)    //节点插入
{
    LinkList list;
    LinkList p = pList;
    Create(&list);

    list->node = e;

    list->next = p->next;
    p->next = list;
}

void Print(LinkList pList)    //打印
{
    LinkList p = pList->next;

    while(p)
    {
        printf("%s ", p->node);
        p = p->next;
    }
    printf("\n");
}

LinkList Union(LinkList pList1, LinkList pList2)
{
    LinkList p1 = pList1->next;            //这里头结点没有使用,如果要从头开始,那就要在插入的时候,进行是否头结点的判断
    LinkList p2 = pList2->next;
    LinkList pRet;
    LinkList pTemp;

    Create(&pRet);

    while(NULL != p1)
    {
        while(NULL != p2)
        {
//            if(p1->node == p2->node)                //因为这是C,并且这里ElemType我们用了char *类型,所以不能如此判断
            if(0 == strcmp(p1->node, p2->node))
            {
                Create(&pTemp);
                pTemp->node = p1->node;
               
                pTemp->next = pRet->next;
                pRet->next = pTemp;
                break;                        //这里默认链表里没有重复元素哈
            }
            else
            {
                p2 = p2->next;
            }
        }
        p1 = p1->next;
        p2 = pList2->next;    //东山再起!只不过是从头再来~~!
    }

    return pRet;
}


int main(void)
{
    LinkList pList1, pList2;
    LinkList pUnion;

    Create(&pList1);
    Create(&pList2);
    Create(&pUnion);

    Insert(pList1, "AAA");        //这里你手动输入也行,但是千万别犯前边的高智商错误了。指针,别胡乱用!
    Insert(pList1, "BBB");        //看看我前边的代码,我这里就不写了
    Insert(pList1, "CCC");

    Insert(pList2, "AAC");
    Insert(pList2, "BBB");
    Insert(pList2, "CCB");

    pUnion = Union(pList1, pList2);

    Print(pList1);
    Print(pList2);
    Print(pUnion);

    return 0;
}
·


不骄不躁,不卑不亢;虚怀若谷,宠辱不惊。
2015-03-23 20:08
jklqwe111
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:336
专家分:1135
注 册:2014-4-13
收藏
得分:0 
8楼代码问题应该很多,你的链表应该是保存的字符串,但这些字符串从何而来,不能无中生有。
2015-03-23 20:25
快速回复:关于链表的输入问题,输入错误,编译没错误的
数据加载中...
 
   



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

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