注册 登录
编程论坛 数据结构与算法

这是哪里出错了?

hg654321free 发布于 2013-04-24 20:47, 774 次点击
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ERROR 5
#define OK 5
//typedef int ElemType;
#define ElemType int


typedef struct Node
{
    ElemType data;    //&Ecirc;&yacute;&frac34;&Yacute;&Oacute;ò
    struct Node *next;  //&Ouml;&cedil;&Otilde;&euml;&Oacute;ò
}Node ,*LinkList;


int CreateListHead(LinkList *L, int n)
{
    LinkList p,r;
    int i=1;

    srand(time(0));       //初始化随机种子

    (*L) = (LinkList)malloc(sizeof(struct Node));        //先建立一个带头结点的单链表

    if((*L) == NULL)

    {

        fprintf(stderr, "malloc() error.\n");

        return ERROR;

    }

    (*L)->next = NULL;




    r=*L;      //尾部结点

    for(i=0; i<n; i++)
    {
        p=(Node *) malloc(sizeof(Node));
        p->data=rand()%100+1;
        r->next =p;
        r=p;
    }

    r->next = NULL;                                        //表示当前链表结束



    return OK;




}

int ClearList(LinkList *L)
{
    LinkList p,q;

    p=(*L)->next;

    while(p)
    {
        q=p->next;
        free(p);
        p=q;
    }

    (*L)->next=NULL;

    return OK;
}

int printList(LinkList L)

{

    LinkList p;

    p = L->next;

    if(p == NULL)

    {

        printf("链表为空.\n");

        return ERROR;

    }

    while(p)

    {

        printf("%d ", p->data);

        p = p->next;

    }

    printf("\n");



    return OK;

}


int main()
{
    LinkList L;
    printf("Hello world!\n");

    CreateListHead(&L,6);
    printList(L);
    return 0;
}
菜鸟一只,怎么return OK 或者return ERROR改成下面都可以正确返回呀?
4 回复
#2
韶志2013-04-24 21:04
你写的什么东西啊,链表的基本算法怎么被你写成这样了?
为什么OK是5 error也是5 ?
#define ElemType int    这又是什么东东?
应该是 typedef int ElemType 吧?   后面想必你是抄书的吧,我就没看了
#3
小王子的花2013-04-26 14:49
#include <iostream>
#define OK 1
#define ERROR 0
using namespace std;
typedef int ElemType;
typedef struct LNode//链表节点类型
{
    int data;
    struct LNode *next;
}LNode,*LinkList;//链表节点指针类型




int CreateList_L(LinkList &L,int n)//创建一个长度为n的线性表L
    {
        int i;
        LNode *p;
        L=(LinkList )malloc(sizeof(LNode));
        L->next=NULL;
        if(! L) exit(0);
        for(i=0;i<n;i++)
        {
            p=(LinkList)malloc(sizeof(LNode));
            
            cin>>p->data;
            p->next=L->next;
             L->next=p;
        }
        return OK;
    }







int GetElem_L(LinkList L,int i,ElemType &e)
{
        LNode *p;
        int j=1;
        p=L->next;
        while(p&&j<i)
        {
            p=p->next;++j;
        }
        if(!p||j>i)return ERROR;
        e=p->data;
        return e;
        }








int  ListInsert_L(LinkList &L,int i,ElemType e)
{
            LNode *p,*s ;
            int j=0;
//                int s;
            //    LinkList p;
            p=L;
            while(p&&j<i-1)
            {
                p=p->next;++j;
            }
            if(!p||j>i-1) return ERROR;
            s=(LinkList)malloc(sizeof( LNode));
            s->data=e;s->next=p->next;
            p->next=s;
            

        return OK;
    }









int ListDelete_L(LinkList &L,int i,ElemType &e)
    {
        LNode *p ,*q;
        int j=0;
        p=L;
    //    int q;
        while(p->next&&j<i-1)
        {
            p=p->next;++j;
        }
        if(!(p->next)||j>i-1) return ERROR;
        q=p->next;p->next=q->next;
        e=q->data; free(q);
    //    return ERROR;
return OK;
    }







int ShowList_L(LinkList &L)
    {
        LinkList p;
        p=L->next;
        while(p)
        {
            cout<<p->data<<"  "<<endl;
            p=p->next;
        }
            
    //    cout<<endl;
        return 0;
    }






int main()
{
  int i,n;
  LNode *p;
  LinkList L;
  cout<<"请输入元素个数:"<<endl;
  cin>>n;
  CreateList_L(L,n);
 ShowList_L(L);
  
 

 for(;;)
  {
      cout<<"请输入操作选择:0,定位;1,插入;2,删除;\n 请输入你的选择:"<<endl;
      cin>>i;
      while(i<0||i>3)
      {
         cout<<"输入错误,请重新输入。"<<endl;
      }
      switch(i)
      {
      case 0:
          {
              int i,e;
              cout<<"输入你想定位的数的位置:"<<endl;
              cin>>i;
              
             GetElem_L( L, i,e);
             cout<<e<<endl;
            
             break;
          }
      case 1:
          {
           int  i,e;
           cout<<"输入插入的位置:"<<endl;
           cin>>i;
          cout<<"输入插入的数:"<<endl;
           cin>>e;
           ListInsert_L(L, i, e);
           ShowList_L(L);
           break;
          }
      case 2:
          {
            int i,e;
            cout<<"输入删除的数的位置:"<<endl;
            cin>>i;
             ListDelete_L(L, i, e) ;
             ShowList_L(L);
             break;
          }
     
      }
  }
return 0;
}









我也是刚学不久 但是感觉你写的太乱了,不好改,你看看这个,不好见谅
#4
爱闹的娃2013-04-26 15:03
回复 楼主 hg654321free
不知道 lz改成什么...然后结果又是什么....在宏定义的时候error为5 ok也为5...为不好的定义
要是可以话..将lz所说的错误贴上来看看....
#5
成欢欢2013-05-04 20:39
回复 3楼 小王子的花
这里使用C++语言么,好多语法都不认识
1