| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 418 人关注过本帖
标题:以前学过C++,meow写过C。数据结构要写C,语法能编译,exe停止运行。。实在 ...
只看楼主 加入收藏
tangchen
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-11-7
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
以前学过C++,meow写过C。数据结构要写C,语法能编译,exe停止运行。。实在不知道错误,求解啊,谢谢,蛮简单的程序,链表的操作啊
#include<stdio.h>
#include<stdlib.h>

#define LEN sizeof(struct LNode)
typedef struct LNode{
    int data;
    struct LNode *next;
}LNode,*LinkList;

void Creat(LinkList L,int n)   
{LNode *p;  
   printf("输入元素:");
   for(int i=n;i>0;--i)
    { p=(LNode*)malloc(sizeof(LNode));
     scanf("%d",&p->next);
     p->next=L->next;
     L->next=p;
 }
}



void initlist(LinkList *L)  //初始化
{
  *L=(LNode*)malloc(sizeof(LNode));
  (*L)->next=NULL;
}

int Getlen(LinkList L)   //求长度
{ int num=0;
      LNode *p;
      p=L->next;
      while(p!=NULL)
      {num++;
       p=p->next;
      }
 
   return (num);
}

LinkList Getelem(LinkList L,int i)   //按序号取元素
  {LNode *p;int pos=1;
    p=L->next;
    if(i<1 || i>Getlen(L)) exit(1);
    while(pos<i)
    {p=p->next;
     pos++;
    }
     return p;
}


LNode *Locate(LinkList L,int x)  //查找运算
{LNode *p;
    p=L->next;
    while(p!=NULL && p->data!=x)
    p=p->next;
  return p;
}

void Inselem(LinkList L,int i,int x)  //插入
{ LNode *p,*q,*s;
    int pos=1;
    p=L;
    if(i<1 || i>Getlen(L)+1) exit(1);
    s=(LNode*)malloc(sizeof(LNode));
    s->data=x;
    while(pos<=i)
    { q=p;p=p->next;
      pos++;
    }
    s->next=q->next;
    q->next=s;
  
}




void Delelem(LinkList L,int i)  //删除
{int pos=1;
    LNode *q=L;LNode *p;
    if(i<1 || i>Getlen(L)) exit(1);
    while(pos<i)
    {q=q->next;
     pos++;
    }
    p=p->next;
    q->next=p->next;
    free(p);
   
}


void print(LinkList L)  //输出表
{
    LNode *t;
    while(t!=NULL)
       {  
          printf("%4d",t->data);
          t=t->next;
       }  
       printf("\n");
}


void main()
{
  int b=0,c=0,e=0,m1=0,m2=0,z1=0,v1=0,a;
 LinkList L;
  printf("输入元素个数:");
  scanf("%d",&a);
  Creat(L,a);
  printf("输出该表:");
  print(L);
 
    b=Getlen(L);
    printf("%s%d","线性表的长度为:",(b+1),"\n");

    printf("输入所取元素的序号:");
    scanf("%d",&c);
    printf("%s%d","所取元素为",Getelem(L,c));
   
    printf("输入要查找的元素:");
    scanf("%d",&z1);
    printf("%s%d","所取元素的下标为:",Locate(L,z1));


   printf("输入要插入的位置及元素:");
   scanf("%d%d",m1,m2);
   Inselem(L,m1,m2);
   printf("输出插入后的表");
   print(L);

   printf("输入要删除的元素的序号:");
   scanf("%d",&v1);
   Delelem(L,v1);
   printf("输出删除后的表");
   print(L);


}
搜索更多相关主题的帖子: 元素 include 
2011-11-07 00:22
laznrbfe
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:482
专家分:1599
注 册:2011-5-22
收藏
得分:20 
程序代码:
#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(struct LNode)
typedef struct LNode{
    int data;
    struct LNode *next;
}LNode,*LinkList;
LinkList Creat(int n) 
{
    LNode *p,*r,*l=NULL;
//    L=(LNode*)malloc(sizeof(LNode));///////
    printf("输入元素:");
    for(int i=n;i>0;--i)
    {
        p=(LNode*)malloc(sizeof(LNode));
        scanf("%d",&p->data);
        p->next=NULL;/////////
        if(!l)
            l=p;
        else
            r->next=p;
        r=p;
    }
    return l;
}

void initlist(LinkList *L)  //初始化
{
    *L=(LNode*)malloc(sizeof(LNode));
    (*L)->next=NULL;
}
int Getlen(LinkList L)   //求长度
{
    int num=0;
    LNode *p;
    p=L->next;
    while(p!=NULL)
    {num++;
    p=p->next;
    }

    return (num);
}

/******/
int Getelem(LinkList L,int i)   //按序号取元素
{
    LNode *p;int pos=1;
    p=L->next;
    if(i<1 || i>Getlen(L)) exit(1);
    while(pos<i)
    {p=p->next;
    pos++;
    }
    return p->data;
}

int Locate(LinkList L,int x)  //查找运算
{
    LNode *p;
    p=L;
    int i=0;
    while(p->data!=x&&p!=NULL)
    {
        p=p->next;
        i++;
    }
    return i;
}
void Inselem(LinkList L,int i,int x)  //插入
{
    LNode *p,*q,*s;
    int pos=1;
    p=L;
    if(i<1 || i>Getlen(L)+1) exit(1);
    s=(LNode*)malloc(sizeof(LNode));
    s->data=x;
    while(pos<=i)
    {
        q=p;p=p->next;
        pos++;
    }
    s->next=q->next;
    q->next=s;

}


void Delelem(LinkList L,int i)  //删除
{
    int pos=1;
    LNode *q=L;LNode *p;
    if(i<0 || i>=Getlen(L)) exit(1);
    while(pos<i)
    {
        q=q->next;
        pos++;
    }
//    printf("%d\n",q->data);
    p=q->next;
//    printf("%d\n",p->data);
    q->next=p->next;////////////
//    printf("%d\n",q->data);
    free(p);

}

/*********************/
void print(LinkList L)  //输出表
{
    while(L)
    {
        printf("%d ",L->data);
        L=L->next;
    }
    printf("\n");
}

void main()
{
    int b=0,c=0,e=0,m1=0,m2=0,z1=0,v1=0,a;
    LinkList L,q;/////
    L=(LNode*)malloc(sizeof(LNode));///////
    q=(LNode*)malloc(sizeof(LNode));///////
    q=L=NULL;
    printf("输入元素个数:");
    scanf("%d",&a);
    q=L=Creat(a);
    printf("输出该表:");
    print(L);
    L=q;

    b=Getlen(L);
    printf("%s%d","线性表的长度为:",(b+1),"\n");

    printf("输入所取元素的序号:");
    scanf("%d",&c);
    printf("%s%d\n","所取元素为",Getelem(L,c));

    printf("输入要查找的元素:");
    scanf("%d",&z1);
    printf("%s%d\n","所取元素的下标为:",Locate(L,z1));


    printf("输入要插入的位置及元素:");
    scanf("%d%d",&m1,&m2);////////////////////
    Inselem(L,m1,m2);
    q=L;//////////
    printf("输出插入后的表");
    print(L);
    L=q;///////////
    printf("输入要删除的元素的序号:");
    scanf("%d",&v1);
    Delelem(L,v1);
    q=L;///////////
    printf("输出删除后的表");
    print(L);
    L=q;//////////


}
2011-11-07 10:32
快速回复:以前学过C++,meow写过C。数据结构要写C,语法能编译,exe停止运行。。 ...
数据加载中...
 
   



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

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