求数据结构 顺序线性表所有基本操作的函数代码

如题
2024-11-25 08:26:05
推荐回答(2个)
回答1:

代码如下:

顺序表的基本操作(C语言版)2010-03-14 08:19#include
#include
#define max_list_size 100
typedef struct{
int *elem;
int length;
}list_node;
list_node L;
int list[max_list_size];
void init();
void doli();
void over();
void creat();
void insert();
void delete();
void display();
int main()
{
init();
doli();
over();
system("PAUSE");
}
void init()
{
L.elem = (int *) malloc (max_list_size * sizeof(int) );
if (! L.elem) {
printf("the memory is full");
exit(1);
}
L.length = 0;
}
void doli()
{
creat();
display();
insert();
display();
delete();
display();
system("PAUSE");
}
//*************以下为建表部分******************
void creat(){
int a, b, i;
printf("请输入结点数:\n");
scanf("%d", &a);
if( a > max_list_size - 1 || a < 0 )
{
printf("分配失败!\n");
exit(1);
}
for( i = 0; i != a; ++i)
{
printf("请输入第%d结点的值:\n", i);
scanf("%d", &b);
L.elem[i] = b;
++L.length;
}
}
//*************以下为插入元素部分*******************
void insert(){
int a, b, i;
int *p, *q;
printf("请输入插入结点的值:\n");
scanf("%d", &a);
printf("请输入插入结点的位置:\n");
scanf("%d", &b);
if(b < 1 || b > L.length+1)
exit(1);
q = &(L.elem[b - 1]);
for(p = &(L.elem[L.length - 1]); p >= q; --p)
*(p+1) = *p;
*q = a;
++L.length;
}
//*************以下为删除元素部分*********************
void delete(){
int i, a, b;
int *p, *q;
printf("请输入删除的位置:\n");
scanf("%d", &a);
if( a < 1 || a > L.length )
{
printf("删除位置错误!");
exit(1);
}
p = &(L.elem[a-1]);
b = *p;
q = L.elem + L.length - 1;
for(++p; p <= q; ++p)
*(p-1) = *p;
--L.length;
}
//****************以下为显示部分**********************
void display(){
int a, b, i;

for( i = 1; i <= L.length; ++i)
printf("%d\t", L.elem[i-1]);
}
//*****************结束****************
void over()
{
}
/×这是从我的空间拷来的,如果需要链表的基本操作,我那上面也有
http://hi.baidu.com/%C4%E3%CB%B5%B9%FD%B5%C4%C7%A3%CA%D6/blog/item/14d0c6f76e28622ebd3109ba.html */

回答2:

所有的数据结构书上都会有这样的代码的。。