//在计算机上先输入一串正整数的序列。请编写一个程序,首先用顺序表存储该序列。 |
//然后执行删除操作,即先从顺序表中找出最小的结点,删除它。然后再在剩余的表 |
//中,找出最小的结点,再删除之。直至表空为止。 |
#include"stdio.h" |
#include"stdlib.h" |
#include"test1.h" |
#include"string.h" |
#define Max 10 |
int main() |
{ |
int i,pos,count; |
char str[Max],sum=0; |
SqList *L; |
L=CreateSqList(); //创建一个指针 |
InitSqList(L); //初始化该指针 |
printf ( "输入一串正整数:\n" ); |
gets (str); //输入一段正整数 |
count= strlen (str); //记数 |
for (i=0;i<count;i++) |
{ |
InsertSqList(L,str[i]); //将正整数插入线性表中 |
} |
printf ( "输出线性表中的元素:\n" ); |
Display(L); //输出线性表 |
printf ( "进行删除操作!\n" ); |
for (i=0;i<count;i++) |
{ |
pos=MinSqList(L)+1; //找到最小结点的位置 |
printf ( "最小结点为:\n" ); |
DeleteSqList(L,pos,&sum); //删除指定结点 |
printf ( "%c\n" ,sum); |
} |
return 0; |
} |
/////////////////////////////////////////// |
/* test1.cpp */ |
/* */ |
/* filename:test1.cpp */ |
/* description:test1头文件的实现文件 */ |
/* designer:zhu jian */ |
/* data:12-10-24 */ |
//////////////////////////////////////////// |
#include"stdio.h" |
#include"stdlib.h" |
#include"test1.h" |
SqList *CreateSqList( void ) //创建一个线性表 |
{ |
SqList *temp; |
temp=(SqList *) malloc ( sizeof (SqList)); |
if (!temp) |
return NULL; |
|
temp->length=0; |
return temp; |
} |
void InitSqList(SqList *L) //初始化线性表 |
{ |
SqList *p; |
p=L; |
if (!L) |
return ; |
p->data[0]=0; |
p->length=0; |
} |
void InsertSqList(SqList *L,elemtype e) //往线性表中插入一个数值 |
{ |
SqList *p; |
p=L; |
if (!L) |
return ; |
else |
{ |
p->data[p->length]=e; |
p->length++; |
} |
} |
void Display(SqList *L) //输出线性表中的元素 |
{ |
int i=1; |
SqList *p; |
p=L; |
if (!L) |
{ |
printf ( "线性表为空!\n" ); |
return ; |
} |
while (i<=p->length) |
{ |
printf ( "第%d个元素是:\n" ,i); |
printf ( "%c\n" ,p->data[i-1]); |
i++; |
} |
} |
unsigned int MinSqList(SqList *L) //在线性表中找到最小的值的结点 |
{ |
int i,pos=0; |
SqList *p; |
p=L; |
if (!L) |
return ERROR; |
for (i=1;i<p->length;i++) |
{ |
if (p->data[pos]>p->data[i]) |
pos=i; |
} |
|
return pos; |
} |
unsigned int DeleteSqList(SqList *L, int pos,elemtype *e) //删除指定位置的结点 |
{ |
int i; |
SqList *p; |
p=L; |
if (!L) |
return ERROR; |
else if (pos<1 || pos>(p->length)) |
{ |
printf ( "参数出错!\n" ); |
return ERROR; |
} |
else |
{ |
*e=p->data[pos-1]; |
for (i=pos;i<p->length;i++) |
p->data[i-1]=p->data[i]; |
p->length--; |
return OK; |
} |
} |
/////////////////////////////////// |
/* test1.h */ |
/* */ |
/* filename:test1.h */ |
/* description:test1的头文件 */ |
/* designer:zhu jian */ |
/* data:12-10-24 */ |
////////////////////////////////// |
#ifndef _DATA_STRUCTURE_TEST1_H_ |
#define _DATA_STRUCTURE_TEST1_H_ |
#ifndef ERROR |
#define ERROR 0 |
#endif |
#ifndef OK |
#define OK 1 |
#endif |
#ifndef NULL |
#define NULL 0 |
#endif |
#define Maxsize 10//定义数据量最大为100个 |
typedef char elemtype; //用elemtype代替char |
typedef struct { //顺序表的存储结构 |
elemtype data[Maxsize]; |
int length; |
}SqList; |
SqList *CreateSqList( void ); //创建一个线性表 |
void InitSqList(SqList *L); //初始化线性表 |
void InsertSqList(SqList *L,elemtype e); //往线性表中插入一个数值 |
void Display(SqList *L); //输出线性表中的元素 |
unsigned int MinSqList(SqList *L); //在线性表中找到最小的值的结点 |
unsigned int DeleteSqList(SqList *L, int pos,elemtype *e); //删除指定位置的结点 |
#endif |