| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 669 人关注过本帖
标题:急啊 哪位帮我改下这个顺序表的程序啊
只看楼主 加入收藏
CSP1574
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2009-9-13
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
急啊 哪位帮我改下这个顺序表的程序啊
不知道哪错了 不知道怎样改
#include<studio.h>
#include<stdlib.h>
#define            TRUE                       1
#define            FALSE                     0
#define            OK                            1
#define            ERROR                    0
#define            OVERFLOW          -2
typedef            int                          status

#define  LIST_INIT_SIZE   100  
#define  LISTINCREMENT    10      
typedef  int   ElemType ;

typedef  struct {
            ElemType  *elem;   
            int       length;  
            int       listsize;
} SqList;
Status  InitList_Sq(SqList &L)
{
      L.elem = (ElemType *) malloc (LIST_INIT_SIZE*sizeof(ElemType));                                             
      if (!L.elem)    exit (-2);
      L.length = 0;
      L.listsize = LIST_INIT_SIZE;
      return 1;
}
Status CreateList(SqList &L)
{
    int i,n;
    printf("请输入顺序表长度:");
    scanf("%d",n);
    for(i=0;i<n;i++);
    {
        printf("请输入数据原元素数组Elem[i%d]=",i);
        scanf("%d",L.elem[i]);
    }
    return(1);
}
Satus ListLength(SqList L)
{
        printf("顺序表的长度为:\n");
        scanf("%d",L.length);
        return(1);
}
Status GetElem(SqList L,int i,ElemType &e)
{
    printf("请输入要查元素的的位置");
    scanf("%d",i);
    if((i<0)||(i>L.length))
        return 0;
    else
    {
        e=L.elem[i-1];
        printf("第i%d的位置上的值为%d\n",i,e);
        return 1;
    }
Status LocateElem(SqList L,ElemType e)
{
     int i;
     printf("请输入e的值:");
     scanf("%d",&e);
     for(i=0;i<L.length;i++);
     if(L.elem[i-1]!=e)
         return 0;
     else
         printf("e在顺序表中的位置为:%d\n",i-1);
         return(1);
}
Status ListInsert_Sq(SqList &L,int i ,ElemType e)
{
    printf("请输入要插入的位置");
    scanf("%d",i);
    printf("请输入插入元素e的值");
    scanf("%d",&e);
    if(i<1||i>L.length+1)     return 0;
    if(l.length==L.listsize){
        newbase=(Elemtype *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType);
        if(!newbase) exit(-2);
        L.elem=newbase;
        L.listsize+=LISTINCREMENT;
    }
    ElemType *p,*q;
    q=&(L.elem[i-1]);
    for(p=&(L.elem[L.length-1]);p>=q;--p)
   
        *(p+1)=*p;
    *q=e;
    ++L.length;
    printf("插入后的顺序表为:%d\n",L.elem[i])
    return 1;
}
Status ListDelet_Sq(SqList &L,int i,ElemType &e)
{
    printf("请输入要删除的位置");
    scanf("%d",i);
    if((i<1)||(i>L.length)) return 0;
    ElemType *p,*q;
    p=&(L.elem[i-1]);
    e= *p;
    q=L.elem+L.length-1;
    for(++p;p<=q;++p)
        *(p-1)=*p;
    --L.length;
    printf("删除后的顺序表为:%d\n",L.elem[i]);
    return 1;
}
Status ShowList(SqList &L,int i)
{
   
   if(L.length=0) exit(0);
   else
      printf("输出显示:%d\n",L.elem[i]); return(1);
}
void ClearList( SqList &L )
{
    L.length=0;
}
Status DestroyList( SqList &L )
{       if (!L.elem)   return 0;
        free(L.elem);   
        L.elem=NULL;   
        L.length=0;   
        L.listsize=0;
        printf("销毁成功");
        return   1;   
}

void main(){
    SqList L;
    ElemTYpe e;
    int i,n;
    InitList_Sq(L);
    printf("1.建立顺序表\n");
    printf("2.求顺序表长度\n");
    printf("3.求顺序表中第i个位置的数据元素数值\n");
    printf("4.求数据元素e在顺序表中的位置\n");
    printf("5.在第i个位置上插入一个数据元素\n");
    printf("6.删除顺序表中第i个位置上的数据元素\n");
    pirntf("7.输出显示\n");
    pirntf("8.清空顺序表\n");
    pirntf("9.销毁顺序表\n");
    printf("请输入你的选择\n");
    scanf("%d",&i);
    while(i!=0){
    switch(i)
    {
    case 1: CreateList(L);break;
    case 2: ListLength(L,e,n);break;
    case 3: GetElem(L,e,n);break;
    case 4: LocateElem(L,e,n);break;
    case 5:  ListInsert_Sq(L,e,n);break;
    case 6:ListDelet_Sq(L,e,n);break;
    case 7: ShowList(L,e,n);break;
    case 8:  ClearList( L,e,n );break;
    case 9: DestroyList( L,e,n );break;
    case 0: break;
    defult:break;
    }
}




搜索更多相关主题的帖子: 顺序 
2009-10-15 16:32
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:10 
这个算C++ 还是C啊


或者这样问:

您写的是C还是C++?

—>〉Sun〈<—
2009-10-23 00:23
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
         好像那个逻辑还是可以的。

,C++和C是不是搞不清楚?

c/c++对大小写敏感。status 和 Status 是不同的。

C++中&有3种含义:取地址,与,引用。

—>〉Sun〈<—
2009-10-23 00:38
huanglang
Rank: 2
等 级:论坛游民
帖 子:3
专家分:15
注 册:2009-10-22
收藏
得分:10 
#include <stdio.h>
#include <stdlib.h>
#define M 20
#define ElemType int  
typedef struct{
    ElemType a[M];
    int length;
}Sq;
int main()
{
    Sq *pz;
    int i,y,cord;
    void outline(Sq L);
    void creat(Sq *L);
    void insert(Sq *L,int i,ElemType e);
    void de(Sq *L,int i);
    do
    {
        printf("\n                          主菜单                  \n");
        printf("\n   1,建立    \n");
        printf("\n   2,插入     \n");
        printf("\n   3,删除   \n");
        printf("\n   4,退出    \n");
        printf("\n   请输入1 2 3 4      \n");
        scanf("%d",&cord);
        switch(cord)
        {
        case 1:
            {
                pz=(Sq *)malloc(sizeof(Sq));
                creat(pz);
                outline(*pz);
            }break;
        case 2:
            {
                printf("请输入i,y:");
                scanf("%d%d",&i,&y);
                insert(pz,i,y);
                outline(*pz);
            }break;
        case 3:
            {
                scanf("%d",&i);
                de(pz,i);
                outline(*pz);
            }break;
        case 4:
                exit(0);
        }
    }while(cord<=4);
    return 0;
}
void outline(Sq L)
{
    int i;
    printf("线性表为:");
    for(i=0;i<L.length;i++)
        printf("%d ",L.a[i]);
    printf("\n");
}
void creat(Sq *L)
{
    int i;
    L->length=0;
    for(i=0;i<9;i++)
    {
        scanf("%d",&(L->a[i]));
        (L->length)++;
    }
}
void insert(Sq *L,int i,ElemType e)
{
    ElemType *p,*q;
    if(i<1 || i>L->length+1)  return;
    q=&(L->a[i-1]);
    for(p=&(L->a[L->length-1]);p>=q;--p)
        *(p+1)=*p;
    *q=e;
    ++(L->length);
}
void de(Sq *L,int i)
{
    ElemType *p;
    int a;
    if(i<1 || i>L->length+1)  return;
    p=&(L->a[i-1]);
    a=L->length;
    for(++p;i<=a;++p,i++)
        *(p-1)=*p;
    --(L->length);
}
 
 这我哪天实验课做的,看看
2009-10-24 11:04
快速回复:急啊 哪位帮我改下这个顺序表的程序啊
数据加载中...
 
   



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

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