您的位置:首页 > 其它

顺序列表的操作

2011-04-21 11:13 239 查看
#include<stdio.h>
#include<stdbool.h>
#include<stdlib.h>

#define maxsize 128

typedef struct sequeue_list //链表定义
{
int data[maxsize];
int last;
}sqlist,*sqlink;

sqlink init_list(void) //链表初始化
{
sqlink L = (sqlink)malloc(sizeof(sqlist));
L->last = -1;
return L;
}

bool is_empty(sqlink L) //判断是否为空
{
return (L->last ==-1);
}

bool is_full(sqlink L) //判断是否为满
{
return (L->last == maxsize -1);
}

bool insert(sqlink L,int data) //在链表末尾插入
{
if(is_full(L))
return false;
else
L->data[++(L->last)] = data;
return true;
}

bool sort(sqlink L) //冒泡排序
{
int i,j,temp,len;
len = length(L);
for(i=0;i<len-1;i++){
for(j=0;j<len-i-1;j++){
if(L->data[j] > L->data[j+1]){
temp = L->data[j];
L->data[j] = L->data[j+1];
L->data[j+1] = temp;
}
}
}
return true;
}

bool insert_data(sqlink L,int data) //插入数据
{
int i,j;
int len = length(L);
for(i=0;i<len;i++){
if(L->data[i]>data){
L->last++;
for(j=L->last;j>=i;j--){
L->data[j] = L->data[j-1];
}
L->data[i] = data;
}
}
}

int length(sqlink L) //获取长度
{
return L->last+1;
}

void show_data(sqlink L) //显示列表
{
int i;
int len = length(L);
for(i=0;i<len;i++)
fprintf(stderr,"data[%d]:%d/n",i,L->data[i]);
}

bool delete(sqlink L,int data) //删除数据操作
{
int i,j;
int len = length(L);
if(is_empty(L))
return false;
else
for(i=0;i<len;i++){
if(data == L->data[i]){
for(j=i;j<len;j++)
L->data[j] = L->data[j+1];
}
}
L->last--;
return true;
}

int main(void)
{
sqlink L;
L = init_list();

int data,ret,len;
int i,k;
bool flag = false;

fprintf(stderr,"input:/n");
scanf("%d",&data);
while(data != -1){
insert(L,data);
show_data(L);
scanf("%d",&data);
}

sort(L);

fprintf(stderr,"insert:/n");
scanf("%d",&data);
insert_data(L,data);

show_data(L);

fprintf(stderr,"delete:/n");
scanf("%d",&data);
len = length(L);
for(k=0;k<len;k++){
if(L->data[k] == data){
delete(L,data);
flag = true;
}
else
flag = false;
}
if(flag == true)
fprintf(stderr,"delete succssful!/n");
else
fprintf(stderr,"delete false!/n");
show_data(L);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: