[c]代码库
//在计算机上先输入一串正整数的序列。请编写一个程序,首先用顺序表存储该序列。
//然后执行删除操作,即先从顺序表中找出最小的结点,删除它。然后再在剩余的表
//中,找出最小的结点,再删除之。直至表空为止。
#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