/*
*该程序有如下函数:
*init_list 构造一个空线性表
*put_elem 给表中第i个元素赋值
*get_elem 用e返回表中第i个元素的值
*
*
*可是建表,复制,读取表,基本实现了功能,完整版在下一篇文章中。
*
*
*/
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#define INIT_SIZE 30 //线性表存储空间的初始分配量
#define INCREMENT_SIZE 20 //线性表存储空间分配增量
//以下为函数运行结果状态代码
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -1
//创建结构
typedef struct STU{
char name[20]; //节点姓名
int age; //年龄
int score; //分数
}ElemType;
typedef struct List{
ElemType *elem; //存储空间基地址
int length; //当前表长
int size; //分配的空间长度
}List;
//构造一个空线性表
int init_list(List* L){
L->elem=(ElemType*)malloc(INIT_SIZE*sizeof(ElemType));
if(!L->elem){
printf("内存分配失败");
exit(OVERFLOW);
}
L->length=0;
L->size=INIT_SIZE;
return OK;
}//init_list
//功能:用e返回表中第i个元素的值 //
void get_elem(List L,int i,ElemType *e)
{
if(i<1||i>L.length)
printf("该元素不存在!");
else *e=L.elem[i-1];
}//get_elem
//功能:给表中第i个元素赋值
void put_elem(List *L,int i,ElemType example)
{
if(i<=L->length&&i>0)
{
ElemType *elem=(L->elem+i-1);
int j;
for(j=0;example.name[j]!='\0';j++)
elem->name[j]=example.name[j];
elem->name[j]=example.name[j];
elem->age=example.age;
elem->score=example.score;
}else{
printf("找不到该元素!");
printf("/n i=%d,L.length=%d",i,L->length);
}
}//put_elem
void main(void){
List L;
ElemType key;
init_list(&L);//建表
int i=1;
for(i=1;i<10;i++){
L.length++;
printf("请输入姓名");
gets(key.name);
printf("请输入年龄和分数");
scanf("%d %d",&key.age,&key.score);
put_elem(&L,i,key);//第i个元素赋值
}
for(i=1;i<10;i++){
get_elem(L,i,&key);
printf(" %s %d %d \n",key.name,key.age,key.score);
}
}
顺序存储链表 C语言实现
最新推荐文章于 2023-06-01 16:24:00 发布