头文件
#ifndef _SQLIST2_H_
#define _SQLIST2_H_
#include <stdio.h>
#include <stdlib.h>
typedef char data_t;
#define N 1024
typedef struct sqlist2{
data_t buff[N];
int len;
} sq_node,*sq_pnode;
//创建序列表
sq_pnode create_sqlist();
//判满
int full_sqlist(sq_pnode L);
//判空
int empty_sqlist(sq_pnode L);
//插入
int insert_sqlist(sq_pnode L,int pos,data_t data);
//打印
int show_sqlist(sq_pnode L);
//删除
int delete_sqlist(sq_pnode L,int pos);
//根据元素找位置
int search_sqlist(sq_pnode L,data_t data);
//根据位置找元素
data_t search2_sqlist(sq_pnode L,int pos);
//清空
int clear_sqlist(sq_pnode L);
//摧毁
int destory_sqlist(sq_pnode *L);
//逆序打印
int revers_show_sqlist(sq_pnode L);
//从小到大排序
int small_large_sqlist(sq_pnode L);
功能代码
#include "sqlist2.h"
//创建序列表
sq_pnode create_sqlist()
{
sq_pnode L = (sq_pnode)malloc(sizeof(sq_node));
if(NULL == L)
{
printf("creat is error\n");
return 0;
}
L->len=0;
return L;
}
//判满
int full_sqlist(sq_pnode L)
{
if(NULL == L)
{
printf("creat is error\n");
return 0;
}
if(N == L->len)
return 1;
else
return 0;
}
//判空
int empty_sqlist(sq_pnode L)
{
if(NULL == L)
{
printf("creat is error\n");
return 0;
}
if(0 == L->len)
return 1;
else
return 0;
}
//插入
int insert_sqlist(sq_pnode L,int pos,data_t data)
{
if(NULL == L)
{
printf("creat is error\n");
return 0;
}
if(1 == full_sqlist(L))
{
printf("L is full\n");
return 0;
}
if(pos<0 || pos>N)
{
printf("pos is error\n");
return 0;
}
int i;
for(i=L->len-1; i>=pos; i--)
{
L->buff[i+1]=L->buff[i];
}
L->buff[pos]=data;
L->len++;
return 0;
}
//打印
int show_sqlist(sq_pnode L)
{
if(NULL == L)
{
printf("creat is error\n");
return 0;
}
if(1 == empty_sqlist(L))
{
printf("L is empty\n");
return 0;
}
int i;
for(i=0;i<=L->len-1;i++)
{
printf("buff[%d]=%c\n",i,L->buff[i]);
}
return 0;
}
//删除
int delete_sqlist(sq_pnode L,int pos)
{
if(NULL == L)
{
printf("creat is error\n");
return 0;
}
if(1 == empty_sqlist(L))
{
printf("L is empty\n");
return 0;
}
if(pos<0 || pos>L->len)
{
printf("pos is error\n");
return 0;
}
int i;
for(i=pos;i<L->len-1;i++)
{
L->buff[i]=L->buff[i+1];
}
L->len--;
return 0;
}
//根据元素找位置
int search_sqlist(sq_pnode L,data_t data)
{
if(NULL == L)
{
printf("creat is error\n");
return 0;
}
if(1 == empty_sqlist(L))
{
printf("L is empty\n");
return 0;
}
int i;
for(i=0;i<L->len;i++)
{
if(data == L->buff[i])
{
return i;
}
}
printf("无此元素\n");
}
//根据位置找元素
data_t search2_sqlist(sq_pnode L,int pos)
{
if(NULL == L)
{
printf("creat is error\n");
return 0;
}
if(1 == empty_sqlist(L))
{
printf("L is empty\n");
return 0;
}
if(pos<0 || pos>L->len)
{
printf("pos is error\n");
return 0;
}
return L->buff[pos];
}
//清空
int clear_sqlist(sq_pnode L)
{
if(NULL == L)
{
printf("creat is error\n");
return 0;
}
if(1 == empty_sqlist(L))
{
printf("L is empty\n");
return 0;
}
L->len=0;
return 0;
}
//摧毁
int destory_sqlist(sq_pnode *L)
{
if(NULL == *L)
{
printf("L is NULL\n");
return 0;
}
free(*L);
*L=NULL;
return 0;
}
//逆序打印
int revers_show_sqlist(sq_pnode L)
{
if(NULL == L)
{
printf("creat is error\n");
return 0;
}
if(1 == empty_sqlist(L))
{
printf("L is empty\n");
return 0;
}
int i;
for(i=L->len-1;i>=0;i--)
{
printf("buff[%d]=%c\n",i,L->buff[i]);
}
return 0;
}
//从小到大排序
int small_large_sqlist(sq_pnode L)
{
if(NULL == L)
{
printf("creat is error\n");
return 0;
}
if(1 == empty_sqlist(L))
{
printf("L is empty\n");
return 0;
}
int i,j;
data_t ch[10];
for(i=L->len-1;i>=0;i--)
{
for(j=0;j<i;j++)
{
if(L->buff[j]>L->buff[j+1])
{
*ch=L->buff[j];
L->buff[j]=L->buff[j+1];
L->buff[j+1]=*ch;
}
}
}
return 0;
}