| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 578 人关注过本帖
标题:插入顺序表的问题
只看楼主 加入收藏
想你的天空
Rank: 2
等 级:新手上路
威 望:5
帖 子:610
专家分:0
注 册:2004-12-30
收藏
 问题点数:0 回复次数:1 
插入顺序表的问题
#include<stdio.h>
#define ADDLIST 10;
#define LIST_INIT_SIZE   100
typedef struct
{
        int *p;
        int length;
        int listsize;
}SqList;
void creatSqList(SqList **r,int n)
{
     int i;
     r->p =(int *)malloc(LIST_INIT_SIZE*sizeof(int));
     if(!r->p) exit(0);  //fail to assign storage
     r->length = 0;
     r->listsize = LIST_INIT_SIZE; //size(at the begin)
     for(i=0;i<n;i++)
     {
       printf("输入第%d个值:",i);
       scanf("%d",r->p);
     }
}
int findInsertPlace(SqList **r,int x)
{
    int i=0;
    while(i<r->length&&*(r->p)<x)
        (r->p)++;
    if(i>=r->length)
    printf("找不到插入的位置!请检查您的数据.");
    else
    return i;
}
void insert(SqList **r,int insertValue,int i)
{   
     int *end,*insert;  // end point to the end adress
     if(i<1||i>(r->length)+1)
     {
       printf("i值不合法!");
       exit(0);
     }
     if((r->length)>=(r->listsize))
     {
       insert = (int *)realloc(r->p,(r->listsize+ADDLIST)*sizeof(int));
       r->p = insert;
       r->listsize += ADDLIST;
     }
     insert = r->(p+i-1);  //insert是插入的位置
     for(end = r->p+(r->length-1);end>=insert;--end)// end point to the end adress
       *(end+1) = *insert;
       *insert = insertValue;
       (r->length)++;
}
void outputSqList(SqList **r)
{
     for(;(r->p)<r->(p+(r->length-1));(r->p)++;)
       printf("%d",r->p);         
}
//此例子只能输入递增的元素
int main()
{
      SqList *r;
      int n = 4; // size
      int x =  4;//value
      creatSqList(&r,n); //n是线性顺序表的长度
      insert(&r,x,findInsertPlace(SqList &r,int x)); //x是要插入的值
       outputSqList(&r);
      system("pause");
      return 0;
}

[此贴子已经被作者于2005-9-6 18:04:39编辑过]


搜索更多相关主题的帖子: 顺序 
2005-09-06 17:37
jackrain
Rank: 1
等 级:新手上路
帖 子:182
专家分:0
注 册:2005-9-4
收藏
得分:0 
唉,怎么说你呢,建议回去猛啃指针,特别是函数传递指针的问题。

程序和身体一样,健壮,再健壮! 我爱C++
2005-09-07 09:40
快速回复:插入顺序表的问题
数据加载中...
 
   



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

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