以下是各个。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编译器是不是有问题。