免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3458 | 回复: 2
打印 上一主题 下一主题

[C] c语言链表的建立和输出问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-10-10 20:33 |只看该作者 |倒序浏览
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct Node
{
        int data;
        struct Node *next;
}Node;
Node *creact(int n)
{
        Node *Head,*tail,*s;
        int i;
        Head=(Node*)malloc(sizeof(Node));
        Head->next=NULL;
        tail=Head;
        for(i=0;i<n;i++)
        {
                s=(Node*)malloc(sizeof(Node));
                scanf("%d",s->data);
                s->next=NULL;
                tail->next=s;
                tail=s;
        }
        return Head;
}
void printlist(Node *Head)
{
        if(Head==NULL)
                printf("finish");
        else
        {
                while(Head!=NULL)
                {
                        printf("%d",Head->data);
                        Head->next=Head;
                }
        }
}
void main()
{
        Node *p;
        int n;
        scanf("%d",&n);
        p=creact(n);
        printlist(p);
}       


哪里出错了

论坛徽章:
24
金牛座
日期:2013-08-21 07:55:52射手座
日期:2014-09-29 15:36:14摩羯座
日期:2014-10-07 21:42:57天秤座
日期:2014-10-16 10:03:00午马
日期:2014-10-19 13:40:31酉鸡
日期:2014-11-08 08:44:54处女座
日期:2014-11-10 17:01:21午马
日期:2014-12-06 16:52:38羊年新春福章
日期:2015-02-12 17:41:512015年迎新春徽章
日期:2015-03-04 09:58:1115-16赛季CBA联赛之广夏
日期:2022-10-07 19:41:11巳蛇
日期:2014-09-13 15:29:54
2 [报告]
发表于 2014-10-10 22:14 |只看该作者
  1. #include <iostream>
  2. using namespace std;

  3. #define OK 0
  4. #define ERROR 1

  5. typedef struct LNode
  6. {
  7.     int data;
  8.     struct LNode * next;
  9. } LNode ,*LinkList;

  10. int InitList_L(LinkList& L)
  11. {
  12.     L = new LNode;
  13.     if (L==NULL) return ERROR;
  14.     L->data = NULL;
  15.     L->next = NULL;
  16.     return OK;
  17. }
  18. int DestroyList_L(LinkList& L)
  19. {
  20.     LinkList p;
  21.     while (L)
  22.     {
  23.         p = L;
  24.         L=L->next;
  25.         delete p;
  26.     }
  27.     return OK;
  28. }
  29. int GetElem_L(LinkList L,int i,int &e)
  30. {
  31.     LinkList p = L->next;
  32.     int j = 1;
  33.     while (p != NULL && j<i)
  34.     {
  35.         p = p->next;
  36.         ++j;
  37.     }
  38.     if (p == NULL || j>i )
  39.         return ERROR;
  40.     else
  41.     {
  42.         e = p->data;
  43.         return OK;
  44.     }
  45. }
  46. int ListInsert_L(LinkList &L,int i,int e)
  47. {
  48.     LinkList p = L;
  49.     int j=0;
  50.     while (p && j < i-1)
  51.     {
  52.        p=p->next;
  53.        j++;
  54.     }
  55.     if (p==NULL || j>i-1)
  56.         return ERROR;
  57.     else
  58.     {
  59.         LinkList s = new LNode;
  60.         s->data = e;
  61.         s->next = p->next;
  62.         p->next = s;
  63.         return OK;
  64.     }
  65. }
  66. int ListDelete_L(LinkList & L,int i,int &e)
  67. {
  68.     LinkList p = L;
  69.     int j = 0;
  70.     while (p->next && j< i-1)
  71.     {
  72.         p = p->next;
  73.         ++j;
  74.     }
  75.     if (p->next==NULL || j>i-1)
  76.         return ERROR;
  77.     else
  78.     {
  79.         LinkList s = p->next;
  80.         p ->next = s->next;
  81.         e = s->data;
  82.         delete s;
  83.         return OK;
  84.     }
  85. }

  86. void MergeList(LinkList & La,LinkList & Lb,LinkList & Lc)
  87. {
  88.     LinkList pa,pb,pc;
  89.     Lc = pc = La;
  90.     pa = La->next;
  91.     pb = Lb->next;
  92.     while (pa && pb)
  93.     {
  94.         if (pa->data < pb ->data)
  95.         {
  96.             pc->next = pa;
  97.             pc = pa;
  98.             pa = pa->next;
  99.         }
  100.         else
  101.         {
  102.             pc->next = pb;
  103.             pc = pb;
  104.             pb = pb->next;
  105.         }
  106.     }
  107.     pc->next = pa? pa:pb;
  108.     delete Lb;
  109. }

  110. void ListPrint_L(LinkList L)
  111. {
  112.     LinkList p = L->next;
  113.     cout<<"LinkList:";
  114.     while (p)
  115.     {
  116.         cout<<p->data<<",";
  117.         p = p ->next;
  118.     }
  119.     cout<<endl;
  120. }

  121. int main(int argc, char* argv[])
  122. {
  123.     LinkList L;
  124.     InitList_L(L);
  125.     ListPrint_L(L);
  126.     ListInsert_L(L,1,1);
  127.     ListInsert_L(L,2,5);
  128.     ListInsert_L(L,3,8);
  129.     ListInsert_L(L,4,10);
  130.     ListPrint_L(L);
  131.     int v;
  132.     ListDelete_L(L,3,v);
  133.     ListPrint_L(L);

  134.     LinkList Lb;                  
  135.     InitList_L(Lb);
  136.     ListPrint_L(Lb);
  137.     ListInsert_L(Lb,1,2);
  138.     ListInsert_L(Lb,2,3);
  139.     ListInsert_L(Lb,3,9);
  140.     ListInsert_L(Lb,4,12);
  141.     ListPrint_L(Lb);

  142.     LinkList Lc;

  143.     MergeList(L,Lb,Lc);
  144.     ListPrint_L(Lc);
  145.         return 0;
  146. }
复制代码

论坛徽章:
1
巨蟹座
日期:2014-03-18 23:44:30
3 [报告]
发表于 2014-10-12 17:27 |只看该作者
目测
  1.   scanf("%d",s->data);
复制代码
这里应该有取地址的操作 scanf("%d",&s->data);
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP