| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1135 人关注过本帖
标题:出现数据类型错误,怎么也想不通,希望各位大侠指点一下
只看楼主 加入收藏
aaaC
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-1-14
收藏
 问题点数:0 回复次数:2 
出现数据类型错误,怎么也想不通,希望各位大侠指点一下

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

typedef char DataType;

#include "Seqlist.h"

#include "tnode.h" typedef TNode *ptrDataType; #include "ptrqueue.h"

void MakeSeqBTree(SeqList *L) { char ch; ch=getchar(); while(ch!='\n') { if(ch!='@') InsertRear(L,ch); ch=getchar(); } }

TNode * MakeLBTree(SeqList *L) { int i=0 , n=ListSize(L); TNode *root, *ptr, *c; Queue Q; if(ListEmpty(L)) { return (NULL); } SetQueue(&Q,50); root=(TNode *)malloc(sizeof(TNode)); SetTNode(root, GetData(L,0));

QInsert(&Q,root); while(!QEmpty(&Q)) { ptr=QDelete(&Q); if(2*i+1 < n && GetData(L,2*i+1)!='@') { c=GetTNode(GetData(L,2*i+1),NULL,NULL); ptr->left=c; QInsert(&Q,c); }

if(2*i+2 < n && GetData(L,2*i+2)!='@') { c=GetTNode(GetData(L,2*i+2),NULL,NULL); ptr->right=c; QInsert(&Q,c); } i++; while(i<n && GetData(L,i)=='@') i++; } FreeQueue(&Q); return(root); }

void LevelOrder(TNode *root) { TNode *ptr; Queue Q; if(root==NULL) return; SetQueue(&Q,50); QInsert(&Q,root); while(!QEmpty(&Q)) { ptr=QDelete(&Q); printf("%4c",ptr->data); if(ptr->left!=NULL) QInsert(&Q,ptr->left); if(ptr->right!=NULL) QInsert(&Q,ptr->right); } FreeQueue(&Q); }

void main() { TNode *root; SeqList L; SetList(&L,50); printf("\n insert data \n"); MakeSeqBTree(&L); root=MakeLBTree(&L); printf("\n after LevelOrder: \n"); LevelOrder(root); FreeList(&L); }

搜索更多相关主题的帖子: include 类型 数据 
2005-01-14 12:24
aaaC
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-1-14
收藏
得分:0 

以下是各个。H文件 seqlist.h #include <iostream.h> #include <stdio.h> #include <stdlib.h> //typedef int DataType;

typedef struct { DataType *data; int max; int size; } SeqList;

void SetList(SeqList *L, int n) { L->data=(DataType *)malloc(n*sizeof(DataType)); if(L->data==NULL) { printf("overflow! \n"); exit(1); } L->max=n; L->size=0; }

void InsertRear(SeqList *L, DataType item) { if(L->size==L->max) { printf("SeqList overflow!"); exit(1); } L->data[L->size]=item; L->size++; }

int ListSize(SeqList *L) { return L->size; }

DataType GetData(SeqList*L, int pos) { if(pos<0||pos>L->size - 1) { printf("Pos in GetData is out of range! \n"); exit(1); } return(L->data[pos]); }

int ListEmpty(SeqList *L) { if(L->size==0) return(1); return(0); }

int ListFull(SeqList *L) { if(L->size==L->max) return(1); return(0); }

int Locate(SeqList *L, DataType item) { int i=0; while(i <= L->size -1 && item!=L->data[i]) i++; if(i<=L->size - 1) return(i); return(-1); }

void SetData(SeqList *L, DataType item, int pos) { if(pos<0 || pos>L->size - 1) { printf("Pos in SetData is out of range! \n"); exit(1); } L->data[pos]=item; }

void Insert(SeqList *L, DataType item ,int pos) { int i; if(L->size == L->max) { printf("SeqList is full! \n"); exit(1); } if(pos<0 || pos > L->size) { printf("Pos in Insert is out of range! \n"); exit(1); }

for(i=L->size-1; i>=pos; i--) L->data[i+1]=L->data[i]; L->data[pos]=item; L->size++; }

void Delete(SeqList *L, int pos) { int i; if(L->size==0) { printf("Delete an empty List! \n"); exit(1); } if(pos < 0 || pos >L->size-1) { printf("Pos is out of range! \n"); exit(1); } for(i=pos+1; i<=L->size-1; i++) L->data[i-1]=L->data[i]; L->size--; }

void PrintList(SeqList *L) { int n,i; n=ListSize(L); for(i=0; i<n; i++) { printf("%6d",GetData(L,i)); if(0==(i+1)%10) { printf("\n"); } } printf("\n"); }

void FreeList(SeqList *L) { free(L->data); //delete []data; }

void Purge(SeqList *L) { int i,j; for(i=0;i<ListSize(L) - 1; i++) { j=i+1; while(j<ListSize(L)) { if(GetData(L,i)==GetData(L,j)) Delete(L,j); else j++; } } }

void Bubble(SeqList *L) { int i,j,noswap; DataType temp; for(i=0; i<L->size - 1; i++) { noswap=1; for(j=L->size-1; j>i; j--) { if(L->data[j] < L->data[j-1]) { temp = L->data[j-1]; L->data[j-1] = L->data[j]; L->data[j]=temp; noswap=0; } } if (noswap==1) return; } }

void ClearList(SeqList *L) { L->size=0; } tnode.h typedef struct tnode { DataType data; struct tnode *left, *right; }TNode;

void SetTNode(TNode *root, DataType item) { root->data=item; root->left=NULL; root->right=NULL; }

TNode *GetTNode(DataType item, TNode *left, TNode *right) { TNode *ptr; ptr=(TNode *)malloc(sizeof(TNode)); ptr->data=item; ptr->left=left; ptr->right=right; return(ptr); } ptrqueue.h #include <stdio.h> #include <stdlib.h>

//typedef int DataType; typedef struct { ptrDataType data; int max; int front,rear, size; }Queue;

void SetQueue(Queue *Q, int n) { Q->data=(ptrDataType )malloc(n*sizeof(ptrDataType)); if( Q->data==NULL) { printf("overflow!"); exit(1); } Q->max=n; Q->front=0; Q->rear=0; Q->size=0; }

void FreeQueue(Queue *Q) { free(Q->data); }

void QInsert(Queue *Q, ptrDataType item) { if(Q->size==Q->max) { printf("Queue is full! \n"); exit(1); } //Q->data[Q->rear]=item; Q->rear=(Q->rear+1)%Q->max; Q->size++; }

ptrDataType QDelete(Queue *Q) { ptrDataType item; if(Q->size==0) { printf("Queue is empty! \n"); exit(1); } item=Q->data[Q->front]; Q->front=(Q->front+1)%Q->max; Q->size--; return (item); }

ptrDataType QEmpty(Queue *Q) { if(Q->size==0) return(Q->data); return(NULL); } /* ptrDataType QFull(Queue *Q) { if(Q->size==Q->max) return (NULL); return (NULL); } */ ptrDataType QGetData(Queue *Q) { if(Q->size==0) { printf("Queue is empty! \n"); exit(1); } return (&(Q->data[Q->front])); }

void ClearQueue(Queue *Q) { Q->front=0; Q->rear=0; Q->size=0; } //ptrqueue.h 老是有问题,不知道用VC编译器是不是有问题。

2005-01-14 12:27
seeker
Rank: 1
等 级:新手上路
帖 子:172
专家分:0
注 册:2005-6-5
收藏
得分:0 
以下是引用aaaC在2005-1-14 12:24:12的发言:

(略。。。。。)

你的程序好多错误,改来改去能够编译了,不过我不知道你的具体怎样用的, 还是有错误,没空看了,自己看看吧。

4z6qCkzk.rar (2.86 KB) 出现数据类型错误,怎么也想不通,希望各位大侠指点一下


我相信总有一片天空属于我!http://myseeker. E-Mail:lwqcny@
2005-06-11 00:27
快速回复:出现数据类型错误,怎么也想不通,希望各位大侠指点一下
数据加载中...
 
   



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

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