事先并不知道元素个数,请问怎么实现
用链表就行了。以下是代码:
#include
#include
#define OK 1
#define Error 0
#define True 1
#define False 0
#define NULL 0
typedef int status;
typedef int Elemtype; //在些定义元素的类型
//线性链表的存储结构
typedef struct LNode{
Elemtype data;
struct LNode *next;
}LNode,*LinkList;
status InitList(LinkList &L){
//构造一个空的集合
if(!(L=(L...全部
用链表就行了。以下是代码:
#include
#include
#define OK 1
#define Error 0
#define True 1
#define False 0
#define NULL 0
typedef int status;
typedef int Elemtype; //在些定义元素的类型
//线性链表的存储结构
typedef struct LNode{
Elemtype data;
struct LNode *next;
}LNode,*LinkList;
status InitList(LinkList &L){
//构造一个空的集合
if(!(L=(LinkList)malloc(sizeof(LNode)))) exit(1);
L->next=NULL;
return OK;
}
status DestroyList(LinkList &L){
//销毁集合L
LinkList p;
if(L){
p=L->next;
free(L);
L=p;
}
return OK;
}
status ListInsert(LinkList &L,int i,Elemtype e){
//在L中第i个位置之前插入新的数据元素e
LinkList p=L,s;
int j=0;
while (p&&jnext;j++;}
if(!p||j>i-1) return Error;
s=(LinkList)malloc(sizeof(LNode));
s->next=p->next;
p->next=s;
s->data=e;
return OK;
}
void disp(LinkList L){//显示全部元素
LinkList p;
if(L){
p=L->next;
printf("集合各元素为:");
printf("%d",p->data);
for(p=p->next;p;p=p->next){
printf(",%d",p->data);
}
printf("\n");
return;
}
printf("The LinkList Does not Exist!\n");
}
int main(){
int e;
int c,i=1;
LinkList L;
InitList(L);
loop1: printf("请输入第 %d 集合的元素:\n",i);
scanf("%d",&e);
ListInsert(L,i,e);
++i;
loop2: printf("继续输入请按2,显示请按1,退出请按0\n");
scanf("%d",&c);
if(c==2) goto loop1;
else if(c==1) {disp(L);goto loop2;}
printf("正在退出。
。。\n");
DestroyList(L);
system("pause");
return 0;
}
希望这个程序对你有所作用。收起