本帖最后由 jackz007 于 2020-3-2 00:55 编辑 #include<stdio.h>
#include <stdlib.h>
#define MAX 50//线性表存储空间的初始分配量
#define listincrement 10//存储空间分配增量
//定义一种结构类型
typedef struct
{
int * elem ;
int length ;
int listsize ;
} SqList ;
//建立一个线性表
void CreatList(SqList * L)
{
int i ;
L -> elem = (int *)malloc(MAX * sizeof(int)) ;//赋予L Max大的基地址
if(L -> elem) {
L -> listsize = 0 ;//就当前给表增加一个大小为listsize的数据元素空间
L -> length = 8 ;//表的长度为8
printf("输入表的长度为:") ;
scanf("%d" , & L -> length) ;
for(i = 0 ; i < L -> length ; i ++) scanf("%d" , & L -> elem[i]) ;
}
}
//在某个位置增加元素
void Listinsert(SqList * L)//m为插入元素的位置,n为插入元素的值
{
int k , m , n ;
printf("请输入要插入元素在表中的位置 : ") ;
scanf("%d" , & m) ;
if(m < 0) m = 0 ;
else if(m > L -> length) m = L -> length ;
printf("请输入要插入元素的值 : ") ;
scanf("%d" , & n) ;
if(m < L -> length) for(k = L -> length ; k > m ; k --) L -> elem[k] = L -> elem[k - 1] ;
L -> elem[m] = n ;
L -> length ++ ;
}
void ShowList(SqList * L)
{
int k ;
printf("\n") ;
for(k = 0 ; k < L -> length ; k ++) printf("%d\n" , L -> elem[k]) ;
printf("\n") ;
}
int main(void)
{
SqList L ;
CreatList(& L) ;
Listinsert(& L) ;
ShowList(& L) ;
Listinsert(& L) ;
ShowList(& L) ;
Listinsert(& L) ;
ShowList(& L) ;
}
编译、运行实况:C:\Bin>g++ -o x x.c
C:\Bin>x
输入表的长度为:3
1
2
3
请输入要插入元素在表中的位置 : 4
请输入要插入元素的值 : 4
1
2
3
4
请输入要插入元素在表中的位置 : 0
请输入要插入元素的值 : 0
0
1
2
3
4
请输入要插入元素在表中的位置 : 2
请输入要插入元素的值 : 5
0
1
5
2
3
4
C:\Bin>
|