| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 503 人关注过本帖
标题:算法错误
只看楼主 加入收藏
wwiilla
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2005-9-5
收藏
 问题点数:0 回复次数:2 
算法错误

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

#define MAX 40

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

int InitList_Sq( SqList &L ) {
L.elem = ( int * )malloc( MAX * sizeof( int ) );
if( ! L.elem ) exit( -2 );
L.length = 20;
L.listsize = MAX;
return 1;
}
int DeleteOddNumbers( SqList &L ) {
int i = 0,j,k,m;
int *p,*q;
for( i ; i < L.length ; i ++ ) {
k = 0;
for( j = 1 ; j <= sqrt(L.elem[i]) ; j ++ ) {
m = L.elem[i] % j;
if( m == 0 ) k ++ ;
}
if( k < 2 ) {
p = &(L.elem[i - 1]);
q = L.elem + L.length - 1;
for( ++p ; p <= q ; ++p )
*(p-1) = *p;
-- L.length;
i --;
}
}
return 1;
}
int main () {
SqList a;
InitList_Sq( a );
printf("Input L:");
for( int i = 0; i < a.length ; i ++ )
scanf("%d",&a.elem[i]);
for( i = 0; i < a.length ; i ++ )
printf("%d ",a.elem[i]);
printf("\n");
DeleteOddNumbers(a);
for( i = 0 ; i < a.length ; i ++ )
printf("%d ",a.elem[i]);
printf("\n");
getch();
free( a.elem );
return 0;
}
删除顺表中所有为奇数的项

搜索更多相关主题的帖子: int 算法 MAX include length 
2006-05-15 18:13
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 

#include <stdio.h>
#include <stdlib.h>
#define LISTSIZE 10
#define INCREMENT 10

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

static void InitialList(SqList *L);
static void CreateList(SqList *L, int n);
static void DeleteElem(SqList *L);
static void VisitList(SqList L);
static void DestroyList(SqList *L);

int main(void)
{
SqList L;
int n;

InitialList(&L);

printf("Enter number n: "); /* n代表元素个数 */
scanf("%d", &n);

CreateList(&L, n);

VisitList(L);

DeleteElem(&L); /* 删除顺序表中所有奇数项 */

VisitList(L);

DestroyList(&L);

return 0;
}

static void InitialList(SqList *L)
{
if ((((*L).elem = (int*)malloc(sizeof(int) * LISTSIZE))) == NULL)
{
exit(1);
}
(*L).length = 0;
(*L).listsize = LISTSIZE;
}

static void CreateList(SqList *L, int n)
{
int i;

for (i = 0; i < n; i++)
{
scanf("%d", &(*L).elem[(*L).length++]) ;
if ((*L).length >= (*L).listsize)
{
if ((((*L).elem = (int*)realloc((*L).elem, sizeof(int) *((*L).listsize + INCREMENT)))) == NULL)
{
exit(1);
}
(*L).listsize += INCREMENT;
}
}
}

static void DeleteElem(SqList *L)
{
int *p, *q, i;

for (i = 0; i < (*L).length; i++)
{
p = &(*L).elem[i];
for (q = p + 1; q <= &(*L).elem[(*L).length - 1]; q++)
{
*(q - 1) = *q;
}
(*L).length--;
}
}

static void VisitList(SqList L)
{
int i;

for (i = 0; i < L.length; i++)
{
printf("%d ", L.elem[i]);
}
printf("\n");
}

static void DestroyList(SqList *L)
{
if ((*L).elem != NULL)
{
free((*L).elem);
(*L).elem = NULL;
}
(*L).length = 0;
}
























日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-16 00:43
独角龙
Rank: 1
等 级:新手上路
帖 子:221
专家分:0
注 册:2006-5-5
收藏
得分:0 


奋斗改变一切!!
2006-05-17 18:17
快速回复:算法错误
数据加载中...
 
   



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

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