| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 509 人关注过本帖
标题:数据结构的指针求救
只看楼主 加入收藏
想你的天空
Rank: 2
等 级:新手上路
威 望:5
帖 子:610
专家分:0
注 册:2004-12-30
收藏
 问题点数:0 回复次数:1 
数据结构的指针求救
#include<stdio.h>
#include<stdlib.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;
}
//斗胆在这里发了, 在C里没人回
搜索更多相关主题的帖子: 指针 数据结构 
2005-09-06 18:11
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
//////////////////
//
//  try it :-)
//
//////////////////
#include <stdio.h>
#include <stdlib.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 == NULL) //fail to assign storage
    exit(0);  
  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 + i);
    r.length++;
  }
}

int findInsertPlace(SqList & r, int x)
{
  int i=0;
  int * temp = r.p;
  for(i = 0; i<r.length; i++)
  {
    if(*(temp)<x)
    {
      temp++;
      continue;
    }
    else
      break;
  }
  if(i == r.length)
    printf("找不到插入的位置!请检查您的数据.");
  else
    return i;
}

void insert(SqList & r, int insertValue, int i)
{   
  int * end;
  int * insert;  // end point to the end adress
  if(i<1 || i>(r.length)+1)
  {
    printf("i值不合法!");
    exit(0);
  }
  if(r.length >= r.listsize)
  {
    int sizeofInt = sizeof(int);
    int a =  ADDLIST + r.listsize;
    int size = a * sizeofInt;
    insert = (int *) realloc(r.p, size);
    r.p = insert;
    r.listsize += ADDLIST;
  }
  insert = r.p +i;  //insert是插入的位置
  for(end = r.p + (r.length-1); end>=insert; --end)// end point to the end adress
    *(end+1) = *end;
  *insert = insertValue;
  (r.length)++;
}

void outputSqList(SqList & r)
{
  int * temp = r.p;
  int * end = r.p + r.length - 1;
  for( ;  temp <= end; temp++)
    printf("%d", *temp);        
}

//此例子只能输入递增的元素
int main()
{
  SqList r;
  int n = 4; // size
  int x =  4;//value
  creatSqList(r,n); //n是线性顺序表的长度
  insert(r,x,findInsertPlace(r, x)); //x是要插入的值
  outputSqList(r);
  system("pause");
  return 0;
}
//欢迎多多来C++ 教室板块!!!

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-09-06 20:52
快速回复:数据结构的指针求救
数据加载中...
 
   



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

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