| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1587 人关注过本帖
标题:顺序表问题,结果很奇怪的(12点前在线等待)
只看楼主 加入收藏
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
以下是引用论坛在2006-5-10 23:15:00的发言:
if (L.length > L.listsize)
{
if ((L.elem = (int*)realloc(L.elem, sizeof(int) *(L.listsize + INCREMENT))) == NULL)
{
exit(1);
}
L.listsize += INCREMENT;
这个地方可能还有点问题,但我想不起来了

应该是if (L.length >= L.length)


日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-10 23:21
gaga
Rank: 1
等 级:新手上路
威 望:2
帖 子:307
专家分:0
注 册:2006-4-5
收藏
得分:0 
你写了程序
我非常的感谢,
但我的到底是哪的错误呢,
还是没有解决根本问题啊

明天的明天还有明天。 可是今天却只有一个。 public Copy from 无缘今生
2006-05-10 23:26
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 

# include <stdio.h>
# include <conio.h>
# include <stdlib.h>

#define LIST_INIT_SIZE 100
#define INCREMENT 10
#define ERROR 0
#define DEBUG 0

typedef struct{
int *elem;
int length;
int listsize;
}Sqlist;

int CreatLinklist(Sqlist &L);
int InitList_Sq(Sqlist &L,int n);
void print(Sqlist L, int n);

int CreatLinklist(Sqlist &L)
{
if((L.elem = (int*)malloc(sizeof(int) * LIST_INIT_SIZE)) == NULL)
{
exit(1);
}
L.length = 0;
L.listsize = LIST_INIT_SIZE;

return 1;

}

int InitList_Sq(Sqlist &L,int n)
{
int i;
printf("\nInput the value of the Sqlist as follows:\n");
for(i = 0; i < n; i++)
{
scanf("%d", &L.elem[i]);
L.length++;
}
return 1;
}

void print(Sqlist L, int n)
{
int i;
for (i = 0;i < n; i++)
{
printf("%d ", L.elem[i]);
}
}


int main(void)
{
int m;
Sqlist L;

CreatLinklist(L);

printf("Input the len of the Sqlist:\n");
scanf("%d", &m);

InitList_Sq(L,m);

print(L, m);
free(L.elem);

getch();
return 0;
}


日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-10 23:29
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
void print(Sqlist &L)//打印
{
int *p;
p=L.elem;
while(p) printf("%2d", *p++);
}

无法停止循环

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-10 23:31
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

改了下你的~~
[CODE]
#include "stdio.h"
#include "stdlib.h"
#include "malloc.h"
#include "alloc.h"
#define LIST_INIT_SIZE 100
#define INCREMENT 10
#define ERROR 0
#define DEBUG 0

typedef struct{
int *elem;
int length;
int listsize;
} Sqlist;


void CreatLinklist(Sqlist &L);
void InitList_Sq(Sqlist &L,int n);
void Print(Sqlist &L);

void CreatLinklist(Sqlist &L)
{
L.elem=(int*)malloc(sizeof(int)*LIST_INIT_SIZE);
if(!L.elem)
exit(-1);
L.length=0;
L.listsize=LIST_INIT_SIZE;
}

void InitList_Sq(Sqlist &L,int n)
{
int i,*k;

if(n>LIST_INIT_SIZE) /*这样不正式,但这个程序足以*/
{
L.elem=(int *)realloc(L.elem,sizeof(int)*n);
L.listsize=n;
}
k=L.elem;
printf("\nInput the value of the Sqlist as follows:\n");
for(i=0;i<n;i++)
{
scanf("%d", k++);
L.length++;
}
}

void Print(Sqlist &L)
{
int *p;

p=L.elem;
while(p < L.elem+L.length)
printf("%d ", *p++);
}


int main()
{
int m, a1, a2, b;
Sqlist L;
int e;

CreatLinklist(L);
printf("Input the len of the Sqlist:\n");
scanf("%d", &m);
InitList_Sq(L,m);
Print(L);
free(L.elem);

return 0;
}


[/CODE]


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-05-10 23:31
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-10 23:33
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

你程序大体三个问题

几个函数不需要返回值。
没判断需要输入的数据个数是不是超过申请的空间
输出表时 while(p)是错的 就算表输出完了,p也不为NULL


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-05-10 23:34
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
动态分配后直接像数组一样应用,没必要在另社指针

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-10 23:34
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

他可以那么用~ 主要是用错了

这又不是单向链表,没在表尾设置NULL指针,这么做显然不对,楼主可能弄混了


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-05-10 23:36
gaga
Rank: 1
等 级:新手上路
威 望:2
帖 子:307
专家分:0
注 册:2006-4-5
收藏
得分:0 
以下是引用feng1256在2006-5-10 23:34:00的发言:

你程序大体三个问题

几个函数不需要返回值。
没判断需要输入的数据个数是不是超过申请的空间
输出表时 while(p)是错的 就算表输出完了,p也不为NULL

非常感谢版主,但我可不问下
while(p),不可以
申请的内存难道不是空的吗


明天的明天还有明天。 可是今天却只有一个。 public Copy from 无缘今生
2006-05-10 23:37
快速回复:顺序表问题,结果很奇怪的(12点前在线等待)
数据加载中...
 
   



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

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