该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我把原文件贴出来吧.
这是.h:
# ifndef ZHOUFEILIST_H
# define ZHOUFEILIST_H
# define TRUE 1
# define FALSE 0
struct seqList
{ int MAXNUM;
int n;
DataType *element;
};
typedef struct seqList *PSeqList;
PSeqList CreateNullList_seq(int m);
int IsNullList_seq(PSeqList palist);
int Locate_seq(PSeqList palist,DataType x);
int InsertPre_seq(PSeqList palist,int p,DataType x);
int DeleteP_seq(PSeqList palist,int p);
struct Node;
typedef struct Node *PNode;
struct Node
{ DataType info;
PNode *link;
};
typedef struct Node *LinkList;
LinkList CreatNullList_link(void);
int IsNullLIst_link(LinkList llist);
PNode Locate_link(LinkList llist,DataType x);
int InsertPost_link(LinkList llist,PNode p,DataType x);
PNode LocatePre_link(LinkList llist,PNode p);
int DeleteV_link(LinkList llist,DataType x);
# endif
这是.c
#include "zhoufeilist.h"
#include
PSeqList CreateNullList_seq(int m)
{ PSeqList palist=(PSeqList)malloc(sizeof(struct seqList));
if(palist!=NULL)
{ palist->element=(DataType *)malloc((sizeof(DataType))*m);
if(palist->element!=NULL)
{ palist->MAXNUM=m;
palist->n=0;
return (palist);
}
free(palist);
}
printf("out of space!!!\n");
return NULL;
}
int IsNullList_seq(PSeqList palist)
{ return(palist->n==0);
}
int Locate_seq(PSeqList palist,DataType x)
{ int q;
for(q=0;qn;q++)
if(palist->element[q]==x) return (q);
return (-1);
}
int InsertPre_seq(PSeqList palist,int p,DataType x)
{ int q;
if(palist->n>=palist->MAXNUM)
{ printf("overflow!!!\n");
return FALSE;
}
if(IsNullList_seq(palist))
{ palist->element[0]=x;
palist->n=1;
return TRUE;
}
if(p<0||p>palist->n)
{ printf("Not exist!!!\n");
return FALSE;
}
for(q=palist->n-1;q>=p;q--)
palist->element[q+1]=palist->element[q];
palist->element[p]=x;
palist->n=palist->n+1;
return TRUE;
}
int DeleteP_seq(PSeqList palist,int p)
{ int q;
if(p<0||p>palist->n-1)
{ printf("Not exist!!!\n");
return FALSE;
}
for(q=p;qn-1;q++)
palist->element[q]=palist->element[q+1];
palist->n=palist->n-1;
return TRUE;
}
LinkList CreatNullList_link(void)
{ LinkList llist=(LinkList)malloc(sizeof(struct Node));
if(llist!=NULL)
{ llist->link=NULL;
llist->info=0;
}
else printf("Out of space!!! \n");
return(llist);
}
int IsNullList_link(LinkList llist)
{ return(llist->link==NULL);
}
PNode Locate_link(LinkList llist,DataType x)
{ PNode p;
if(llist==NULL) return(NULL);
p=llist->link;
while(p!=NULL&&p->info!=x) p=p->link;
return(p);
}
int InsertPost_link(LinkList llist,PNode p,DataType x)
{ PNode q=(PNode)malloc(sizeof(struct Node));
if(q!=NULL)
{ q->info=x;
q->link=p->link;
p->link=q;
llist->info=llist->info+1;
return TRUE;
}
printf("Out of space!!!\n");
return FALSE;
}
PNode LocatePre_link(LinkList llist,PNode p)
{ PNode p1;
if(IsNullList_link) return(NULL);
p1=llist;
while(p1!=NULL&&p1->link!=p) p1=p1->link;
return(p1);
}
int DeletV_link(LinkList llist,DataType x)
{ PNode p,q,r;
p=llist;
if(p==NULL) return FALSE;
r=p->link;
while(r!=NULL&&r->info!=x)
{ p=p->link;
r=p->link;
}
if(p->link==NULL)
{ printf("Not exist!!!\n");
return FALSE;
}
else
{ q=p->link;
p->link=q->link;
free(q);
return TRUE;
}
}