#include <stdio.h>
#include <stdlib.h>
typedef struct{
int *elem;
int length;
} Sqlist;
//1.初始化顺序表
void InitSqlist(Sqlist *L){
L->elem = (int *)malloc(100 * sizeof(int));
if(!L->elem)
exit(-1);
else
{
L->length = 0;
}
}
//2.当前线性表长度
int SqlistLen(Sqlist *L){
return L->length;
}
//3.插入新元素使其成为第i个元素
void InsertElementSqlist(Sqlist *L, int i, int Elem){
int *p, *q;
if(i < 1 || i > (L->length)+1)
exit(-1);
q = &(L->elem[i-1]);
for(p = &(L->elem[L->length-1]); p >= q; --p)
{
*(p+1) = *p;
}
*q = Elem;
++L->length;
}
//4.删除第i个元素
void DeleteSqlist(Sqlist *L, int i){
int *p, *q;
if(i < 1 || i > (L->length)+1)
exit(-1);
p = &(L->elem[i-1]);
q = (L->elem) + (L->length-1);
for(++p; p <= q; ++p){
*(p-1) = *p;
}
--L->length;
}
//5.对顺序表升序排序
void SortSqlist(Sqlist *L){
int i, j, temp;
for(j = 0; j < L->length; j++)
{
for(i = 0; i < L->length - j; i++){
if(L->elem[i] > L->elem[i+1])
{
temp = L->elem[i];
L->elem[i] = L->elem[i+1];
L->elem[i+1] = temp;
}
}
}
}
main(){
Sqlist L;
int i;
InitSqlist(&L);
InsertElementSqlist(&L,1,5);
InsertElementSqlist(&L,2,9);
InsertElementSqlist(&L,3,4);
InsertElementSqlist(&L,4,8);
InsertElementSqlist(&L,5,3);
InsertElementSqlist(&L,6,7);
printf("当前元素为:\n");
for(i = 0; i < L.length; ++i){
printf("%d ", L.elem[i]);
}
printf("\n");
DeleteSqlist(&L, 3);
printf("删除第3个元素之后为:\n");
for(i = 0; i < L.length; ++i){
printf("%d ", L.elem[i]);
}
printf("\n");
SortSqlist(&L);
printf("排序之后结果为:\n");
for(i = 0; i < L.length; ++i){
printf("%d ", L.elem[i]);
}
printf("\n");
}
#include <stdlib.h>
typedef struct{
int *elem;
int length;
} Sqlist;
//1.初始化顺序表
void InitSqlist(Sqlist *L){
L->elem = (int *)malloc(100 * sizeof(int));
if(!L->elem)
exit(-1);
else
{
L->length = 0;
}
}
//2.当前线性表长度
int SqlistLen(Sqlist *L){
return L->length;
}
//3.插入新元素使其成为第i个元素
void InsertElementSqlist(Sqlist *L, int i, int Elem){
int *p, *q;
if(i < 1 || i > (L->length)+1)
exit(-1);
q = &(L->elem[i-1]);
for(p = &(L->elem[L->length-1]); p >= q; --p)
{
*(p+1) = *p;
}
*q = Elem;
++L->length;
}
//4.删除第i个元素
void DeleteSqlist(Sqlist *L, int i){
int *p, *q;
if(i < 1 || i > (L->length)+1)
exit(-1);
p = &(L->elem[i-1]);
q = (L->elem) + (L->length-1);
for(++p; p <= q; ++p){
*(p-1) = *p;
}
--L->length;
}
//5.对顺序表升序排序
void SortSqlist(Sqlist *L){
int i, j, temp;
for(j = 0; j < L->length; j++)
{
for(i = 0; i < L->length - j; i++){
if(L->elem[i] > L->elem[i+1])
{
temp = L->elem[i];
L->elem[i] = L->elem[i+1];
L->elem[i+1] = temp;
}
}
}
}
main(){
Sqlist L;
int i;
InitSqlist(&L);
InsertElementSqlist(&L,1,5);
InsertElementSqlist(&L,2,9);
InsertElementSqlist(&L,3,4);
InsertElementSqlist(&L,4,8);
InsertElementSqlist(&L,5,3);
InsertElementSqlist(&L,6,7);
printf("当前元素为:\n");
for(i = 0; i < L.length; ++i){
printf("%d ", L.elem[i]);
}
printf("\n");
DeleteSqlist(&L, 3);
printf("删除第3个元素之后为:\n");
for(i = 0; i < L.length; ++i){
printf("%d ", L.elem[i]);
}
printf("\n");
SortSqlist(&L);
printf("排序之后结果为:\n");
for(i = 0; i < L.length; ++i){
printf("%d ", L.elem[i]);
}
printf("\n");
}