| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 608 人关注过本帖
标题:顺序表的开辟问题?
只看楼主 加入收藏
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
收藏
 问题点数:0 回复次数:6 
顺序表的开辟问题?

大家看红色的部分:
#include<stdio.h>
#include<malloc.h>
typedef int elemtype;
#define INITSIZE 100
typedef struct
{
elemtype *data;
int length;
int listsize;
}sqlink;
/**********************************************/
//开辟顺序表
sqlink *initlist(sqlink *L,int i)
{
int j;
L->data=(elemtype*)malloc(sizeof(elemtype)*INITSIZE);
L->length=0;
L->listsize=INITSIZE;
for(j=0;j<i;j++)
printf("Input %d list",j);
scanf("%d",L->data[i]);
return L;

}
问题:
L->data是指针,那么红色的部分就是表是将开辟的首地址赋值给它,如果要在结点赋值的话那么就用L->*data=可以吗?
等待细答!!!!!!!!!!!

搜索更多相关主题的帖子: include color 
2007-09-27 23:14
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
收藏
得分:0 

看看所有的原代码吧!
#include<stdio.h>
#include<malloc.h>
typedef int elemtype;
#define INITSIZE 100
typedef struct
{
elemtype *data;
int length;
int listsize;
}sqlink;
/**********************************************/
//开辟顺序表
sqlink *initlist(sqlink *L,int i)
{
int j;
L->data=(elemtype*)malloc(sizeof(elemtype)*INITSIZE);
L->length=0;
L->listsize=INITSIZE;
for(j=0;j<i;j++)
printf("Input %d list",j);
scanf("%d",L->data[i]);
return L;

}
/***********************************************/
//顺序表长度
int getlen(sqlink *L)
{
return L->length;
}
/*************************************************/
//取顺序表的元素
int getelm(sqlink *L,int i)
{
int e;
if(i<0||i>L->length)
return 0;
else
e=L->data[i-1];
return e;
}
/*************************************************/
//元素定位
int locate(sqlink *L,elemtype e)
{
int i=0;
while (i<L->length)
i++;
if(L->data[i]==e)
return i;


}
/*****************************************************/
//元素的插入
int insert(sqlink *L,int i,elemtype e)
{
int j;
if(i<1||i>L->length+1)
return 0;
if(L->length==L->listsize)
{
L->data=(elemtype *)realloc(L->data,(L->listsize+1)*sizeof(elemtype ));
L->listsize++;
}
for(j=L->length;j>=i;j--)
L->data[i+1]=L->data[i];
L->data[i-1]=e;
L->length++;
return 1;
}
/********************************************************/
//元素的删除
int delete(sqlink *L,int i,elemtype e)
{
int j;
if(i<1||i>(L->length+1))
return 0;
e=L->data[i-1];//储存删除的元素,windows 下的 Ctrl+z操作,但是在主函数段没有用,这里只是说明
for (j=i;j<L->length;j++)
L->data[i-1]=L->data[i];
L->length--;
return 1;
}
/*********************************************************/
//主函数
void main()
{
sqlink *initlist(sqlink *L,int i);//声明
int getlen(sqlink *L);
int getelm(sqlink *L,int i);
int locate(sqlink *L,elemtype e);
int insert(sqlink *L,int i,elemtype e);
int delete(sqlink *L,int i,elemtype e);
sqlink *L,*K;
char s[]="a";
int m;
elemtype e;
K=initlist(L);
printf("OK!,created !\n");
printf("The length is %d\n",getlen(K));
printf("/***************************************************/\n");
printf("\n you can deal the follow things :\n");
printf(" \n getelem \n locate\n insert \n delete\n");
printf("/***************************************************/\n");
scanf("%s",s);
if(s[]=="getelem")
{
{ printf("Input which one do u want to get \n");
getchar();
scanf("%d",m);
getelm(K,m);
}
else
if(s[]=="locate")
printf("Input which one do u want to get \n");
getchar();
scanf("%d",e);
locate(K,m);
else
if(s[]=="insert")
printf("Input which one do u want to insert and what elem do u want to input:\n");
getchar();
scanf("%d %d",m,e);
insert(m,e);
else
if (s[]=="delete")
printf("Input which one do u want to delete :\n");
getchar();
scanf("%d ",m);
}
else
printf("The wrong input !\n");
printf("The length is %d\n",getlen(K));

}


方寸之内,剖天下; 方坛之内,析自我;
2007-09-27 23:16
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

你都知道L->data是指针,那引用元素就应该是*(L->data)吧.


倚天照海花无数,流水高山心自知。
2007-09-28 14:23
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
收藏
得分:0 
L-&gt;data是指针,那么红色的部分就是表是将开辟的首地址赋值给它,那么L-&gt;data[i]表示一个数组,意思就是:在第一个结点中将储存所有的数据,它并没有开辟多个结点!!

方寸之内,剖天下; 方坛之内,析自我;
2007-09-28 22:28
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
typedef struct
{
elemtype *data;//这个相当于数组,data[i]就是个元素.
int length;
int listsize;
}sqlink;

倚天照海花无数,流水高山心自知。
2007-09-28 22:38
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
不过我提倡这样做.
要么就整体给结构体分配空间
要么就直接定义数组.

倚天照海花无数,流水高山心自知。
2007-09-28 22:41
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
收藏
得分:0 
thank you !

方寸之内,剖天下; 方坛之内,析自我;
2007-09-29 22:48
快速回复:顺序表的开辟问题?
数据加载中...
 
   



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

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