| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 835 人关注过本帖
标题:编了个顺序表的初始化,新建,插入,删除,查询,输出,可是好多错,求指导
只看楼主 加入收藏
黎暮浮云
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-3-24
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
编了个顺序表的初始化,新建,插入,删除,查询,输出,可是好多错,求指导
#include<stdlib.h>
#include<stdio.h>
#define maxsize 1024
typedef int T
typedef struct List        结构类型
{ int size,maxlist;
  T element[maxsize];
}list;
void creatlist(list *1st,int maxsize)     初始化
{ 1st->size=0;
  1st->maxlist=maxsize;
}
bool isempty(list 1st)
{ return 1st.size==0;
}
bool isfull(list 1st)
{ return 1st.size==1st.maxlist;
}
void clear(list *1st)
{ 1st->size=0;
}
void initlist(list *1st)          新建
{  int i;
for (i=0;i<maxsize;1st->size++,i++)
scanf("%d",&(1st->element[i]));
}
bool output(list *1st)          输出
{  int i;
for (i=0;i<1st->size;i++)
printf("%d",1st->element[i]);
printf("\n");
}
bool locatelem(list *1st,T x)           查寻
{  int i;
for (i=0;i<=1st->size;i++)
if(1st->element[i]==x)
return i+1;
return 0;
}
bool insert(list *1st,int pos,T x)     插入     
{ int i;
if(isfull(*1st))
{printf("overflow");return false;
}
if(pos<0||pos>1st->size)
{ printf("out of bounds");
  return false;
}
for (i=1st->size-1;i>=pos;i--)
1st->element[i+1]=1st->element[i];
1st->element[pos]=x;
1st->size++;
return ture;
}
bool remove(list *1st,int pos, T*x)         删除
{ int i;
  if(isempty(*1st))
  { printf("underflow");return false;
  }
  *x=1st->element[pos];
  for(i=pos+1;i<1st->size;i++)
      1st->element[i-1]=1st->element[i];
  1st->size--;
  return ture;
}
void main()             主函数
{
  int n,i,k=1,m,x;
  list l;
  createlist(l);
  while(k)
   { printf("请选择 0--5: ")
     scanf("%d",&m);
     getchar();
switch(m)
{
     case 0:return;
     case 1:{      printf("输入元素值,构建顺序表:\n");
                   printf("请输入顺序元素的个数: ");
                   scanf("%d",&n);
                   creatlist(l,n);
                   Output(l);
                   break;}
     case 2:Output(l);printf("\n");break;
     case 3:{      Printf("请输入要查找的元素值: ");
                   scanf("%d",&x);
                   k=locatelem(l,x);
                   Printf("要查找的元素的定位:%d\n",k);
                   printf("\n");
                   break;}
     case 4:{      printf("输入要插入元素的位置及他的值:");
                   scanf("%d",&i);
                   scanf("%d",&x);
                   insert(l,x,i);
                   Output(l);
                   printf("\n");
                   break;}
     case 5:{      printf("输入要删除元素的位置:");
                   scanf("%d",&i);
                   Output(l);
                   printf("\n");
                   break;}
           printf("继续运行吗Y(1)/N(0): ");
           scanf("%d",&k);
           if(!k) return;
     }
}
搜索更多相关主题的帖子: void 查询 element include return 
2012-03-26 23:18
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:20 
程序代码:
#include <stdio.h>
#include <stdlib.h>

#define MAX_SIZE    (1024)//

typedef int T;
typedef struct _list//
{
    int size;
    int maxlist;
    T element[MAX_SIZE];
}list;

/**

 * #brief    创建顺序表

 * #param    v_plist,

 * #return

 *            0  成功

 *            非0 失败

 */
int creat_list(list *v_plist)
{
    if (NULL == v_plist)
    {
        //print error msg!
        return -1;//failed
    }

    v_plist->size = 0;
    v_plist->maxlist = MAX_SIZE;

    return 0;
}

/**

 * #brief    判断是否为空表

 * #param    v_list

 * #return

 *            0  是

 *            非0 否

 */
int is_empty(list v_list)
{
    if (0 == v_list.size)
    {
        return 0;
    }

    return -1;
}

/**

 * #brief    判断表是否满

 * #param    v_list

 * #return

 *            0  是

 *            非0 否

 */
int is_full(list v_list)
{
    if (v_list.maxlist == v_list.size)
    {
        return 0;
    }

    return -1;
}

/**

 * #brief    清空表

 * #param    v_plist

 * #return

 *            0  成功

 *            非0 失败

 */
int clear_list(list *v_plist)
{
    if (NULL == v_plist)
    {
        //print error msg!
        return -1;
    }

    v_plist->size = 0;

    return 0;
}

/**

 * #brief    初始化表

 * #param    v_plist

 * #param    v_num

 * #return

 *            0  成功

 *            非0 失败

 */
int init_list(list *v_plist, int v_num)
{
    int i;

    if (NULL == v_plist || v_num >= MAX_SIZE)
    {
        //print error msg!
        return -1;
    }

    printf_s("输入元素值,构建顺序表:\n");
    for (i=0; i<v_num; ++i)
    {
        scanf_s("%d", &(v_plist->element[i]));
   
        ++(v_plist->size);
    }

    return 0;
}
/**

 * #brief    输出表信息

 * #param    v_list

 * #return

 *            0  成功

 *            非0 失败

 */
int print_list(list v_list)
{
    int i;

    if (0 == v_list.size)
    {
        //print waring!
        return -1;
    }

    for (i=0; i<v_list.size; ++i)
    {
        printf ("%d\n", v_list.element[i]);
    }

    return 0;
}

/**

 * #brief    查询表信息

 * #param    v_list

 * #param    v_x

 * #return

 *            0  成功

 *            非0 失败

 */
int search_list(list v_list, T v_x)
{
    int i;

    for (i=0; i<v_list.size; ++i)
    {
        if (v_list.element[i] == v_x)
        {
            return 0;
        }
    }

    return -1;
}

/**

 * #brief    查询表信息

 * #param    v_plist

 * #param    v_pos

 * #param    v_x

 * #return

 *            0  成功

 *            非0 失败

 */
int insert_list(list *v_plist, int v_pos, T v_x)
{
    int i;

    if (0 == is_full(*v_plist))
    {
        //print waring msg!
        return -1;
    }

    if (v_pos<0 || v_pos>=v_plist->size)
    {
        //print error msg!
        return -1;
    }

    for (i=v_plist->size; i>v_pos; --i)
    {
        v_plist->element[i] = v_plist->element[i-1];
    }
    v_plist->element[v_pos] = v_x;
    ++(v_plist->size);

    return 0;
}

/**

 * #brief    删除表信息

 * #param    v_plist

 * #param    v_pos

 * #param    v_x

 * #return

 *            0  成功

 *            非0 失败

 */
int delete_list(list *v_plist, int v_pos, T *v_x)
{
    int i;

    if (0 == is_empty(*v_plist))
    {
        //print waring msg!
        return -1;
    }

    if (v_pos<0 || v_pos>=v_plist->size)
    {
        //print error msg!
        return -1;
    }

    *v_x = v_plist->element[v_pos];

    for (i=v_pos; i<v_plist->size; ++i)
    {
        v_plist->element[i] = v_plist->element[i+1];
    }
    --(v_plist->size);

    return 0;
}

/**

 * #brief    操作

 * #param    v_plist

 * #param    v_code

 * #return

 *            0  成功

 *            非0 失败

 */
int operator_list(list *v_plist, int v_code)
{
    int n;
    int x;

    switch (v_code)
    {
    case 0:{
        return 0;}
    case 1:{
        printf_s("请输入顺序元素的个数:");
        scanf_s("%d",&n);

        if (0 != init_list(v_plist, n))
        {
            //print error msg!
            return -1;
        }

        return 0;}
    case 2:{
        printf_s("\t打印顺序表信息!\n");
        print_list(*v_plist);

        return 0;}
    case 3:{
        printf_s("请输入要查找的元素值:");
        scanf_s("%d",&n);

        if (0 == search_list(*v_plist, n))
        {
            printf_s("\t查找成功\n");
        }
        else
        {
            printf_s("\t没找到\n");
            return -1;
        }
   
        return 0;}
    case 4:{
        printf_s("输入要插入元素的位置及他的值:");
        fflush(stdin);
        scanf_s("%d,%d", &n, &x);

        if (0 == insert_list(v_plist, n, x))
        {
            printf_s("\t元素插入成功!\n");
            return 0;
        }
        else
        {
            return -1;
        }}
    case 5:{
        printf("输入要删除元素的位置:");
        scanf_s("%d", &n);

        if (0 == delete_list(v_plist, n, &x))
        {
            printf_s("\t元素删除成功!\n");
            return 0;
        }
        else
        {
            return -1;
        }}
    }
    return -1;
}
int main(void)
{
    list l;
    int m;

    creat_list(&l);

    while (1)
    {
        printf_s("请选择 0 -- 5:\n");
        printf_s("1、初始化表\n2、打印表\n3、查找元素\n4、插入元素\n5、删除元素\n");
        scanf_s("%d", &m);
        fflush(stdin);
        operator_list(&l, m);
    }

    return 0;
}
2012-04-01 00:23
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
感觉是相当的啰嗦
2012-04-01 00:25
快速回复:编了个顺序表的初始化,新建,插入,删除,查询,输出,可是好多错,求 ...
数据加载中...
 
   



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

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