标题:[求助]顺序表赋值问题
只看楼主
bjtusq
Rank: 2
来 自:BJTU
等 级:论坛游民
帖 子:141
专家分:20
注 册:2006-8-5
 问题点数:0 回复次数:7 
[求助]顺序表赋值问题
我想给一个顺序表赋值
#include <stdio.h>
#include <iostream.h>
#include <stdlib.h>
#define list_init_size 10
#define max_size 100
typedef struct {
int* elem;//int*型元素
int length;//实际长度
int listsize;//最大长度
}sqlist;

void creatsqlist(sqlist &l)
{
l.elem=(int*)malloc(sizeof(int)*list_init_size);
if(!l.elem)
exit(1);
l.length=0;
l.listsize=list_init_size;
}

建好后
我用l.elem[]={1,2,3,4};
这句话赋值
可是这样写不对啊
我就是想直接给顺序表赋值
怎么做啊
搜索更多相关主题的帖子: 顺序表 赋值 int elem list 
2006-11-11 14:17
bjtusq
Rank: 2
来 自:BJTU
等 级:论坛游民
帖 子:141
专家分:20
注 册:2006-8-5
得分:0 
l.elem[init_list_size]={1,2,3,4};
赋值也不行 啊

[url][/url]
2006-11-11 14:18
aaabccc
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2006-11-6
得分:0 
void creatsqlist(sqlist &l)错了把?
void creatsqlist(sqlist l)

2006-11-11 15:25
bjtusq
Rank: 2
来 自:BJTU
等 级:论坛游民
帖 子:141
专家分:20
注 册:2006-8-5
得分:0 
#include <stdio.h>
#include <iostream.h>
#include <stdlib.h>
#define list_init_size 10
#define max_size 100

typedef struct {
int* elem;//int*型元素
int length;//实际长度
int listsize;//最大长度
}sqlist;

void creatsqlist(sqlist &l)
{
l.elem=(int*)malloc(sizeof(int)*list_init_size);//开辟一个名为l的顺序表
if(!l.elem)//判断顺序表是否存在
exit(1);
l.length=0;
l.listsize=list_init_size;
}

void initsqlist(sqlist &l)
{
int* p;
int n;
cout<<"请输入顺序表元素数(1-9):"<<endl;//让用户输入顺序表元素个数
cin>>n;
p=l.elem;//p指向头指针
cout<<"请输入递增有序顺序表!"<<endl;
for(int i=0;i<n;i++)//逐个赋值
{
cin>>*p;
p++;
l.length++;
}
cout<<"输入的递增顺序表为:"<<endl;//打印出初始化的顺序表
for(i=0;i<n;i++)
cout<<l.elem[i]<<"\t";
cout<<endl;
}

void insertsqlist(sqlist &l)
{
int q;
cout<<"请输入要插入的数:";
cin>>q;
cout<<"您要插入的数是"<<q<<endl;
int *p;
p=&(l.elem[l.length-1]);
if(*p<q)//判断最后一个元素是否小于q,如果小于,就在把q插到最后。
{
l.elem[l.length]=q;
l.length++;
}
else
{
for(;*p>q;p--)//判断p指向的元素是否大于q
{
*(p+1)=*p;//如果p指向的元素大于q,就把p指向的元素后移
}
l.length++;//l的长度加1
*(p+1)=q;//此时p指向的元素小于q,所以把q的值赋予p指向的元素的下一个
}
cout<<"插入操作完成后的顺序表:"<<endl;
for(int i=0;i<l.length;i++)
cout<<l.elem[i]<<"\t"<<endl;
}

void main()//主函数
{
sqlist l;
creatsqlist(l);
initsqlist(l);
insertsqlist(l);
}

我用的参数都是&l
整个程序也没问题啊
不解
迷惑ing


[url][/url]
2006-11-11 15:42
bjtusq
Rank: 2
来 自:BJTU
等 级:论坛游民
帖 子:141
专家分:20
注 册:2006-8-5
得分:0 
如果都换成l的话
编译可以通过
但是运行就出问题了

[url][/url]
2006-11-11 15:43
happyboe
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-10-27
得分:0 

第一,函数需要参数需要使用引用标识苻&,因为部分函数需要修改你定义的结构体中的数据,这是没有错误的.
第二,关于直接赋值的问题,首先你这样的想法是不合理的,因为你即使直接赋值后,你仍然需要修改你的链表长度值,达不到简化的目的.另外,使用l.elem[]={1,2,3,4};这样的赋值在这里是不合法的,c中仅限于数组定义时可以使用这样的缺省定义并赋初始值的方式.至于这个l.elem[init_list_size]={1,2,3,4};,因为c在数组定义时不能使用变量,所以编译系统会解释为你要给你的 l.elem[10](因为#define list_init_size 10)赋值,但是赋值只能跟一个值,所以会报错.

2006-11-11 21:57
bjtusq
Rank: 2
来 自:BJTU
等 级:论坛游民
帖 子:141
专家分:20
注 册:2006-8-5
得分:0 
谢谢楼上的指点


[url][/url]
2006-11-12 10:36
longerhe
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2006-10-10
得分:0 

for(int i=0;i<4;i++)
l.elem[i]=i+1;
l.length++;
for(int i=4;i<list_init_size;i++);
l.elem[i]=0;
l.length++;

2006-11-28 01:13



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-102239-1-1.html




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

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