顺序线性表的创建插入

/*
功能:顺序线性表的创建插入
作者:剑驰
时间:2009/10/20
*/

#include<stdio.h>
#include<malloc.h>

#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10

typedef struct{
 int *elem;
 int length;
 int listsize;
}sqlist;

int InitList(sqlist *l)
{
 l->elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));
 if(!l->elem)
 {
  printf("分配失败!");
  exit(-1);
 }
 l->length=0;
 l->listsize=LIST_INIT_SIZE;
 return 0;
}
int CreateList(sqlist *l,int len)
{
 int i;
 int e;
 InitList(l);
 printf("输入顺序表元素:");
 for(i=0;i<len;i++)
 {
  scanf("%d",&e);
  l->elem[i]=e;
  l->length++;
 }
 return 0;
}
int ListInset(sqlist *l,int e,int count)
{
 int i;
 if(count>l->length|count<=0)
 {
  printf("该位置不能插入元素!/n");
  exit(-1);
 }
 for(i=l->length;i>=count;i--)
 {
  l->elem[i]=l->elem[i-1];
 }
 l->elem[count-1]=e;
 l->length++;
 return 0;
}
int PrintList(sqlist l)
{
 int i;
 for(i=0;i<l.length;i++)
  printf("%-5d",l.elem[i]);
 return  0;
}

void main()
{
 int len;
 sqlist list;
 int i;
 int e;
 int count;
 printf("输入顺序表长度:");
 scanf("%d",&len);
 CreateList(&list,len);
 PrintList(list);
 printf("你需要插入元素");
 scanf("%d",&e);
 printf("插入元素位置:");
 scanf("%d",&count);
 ListInset(&list,e,count);
 PrintList(list);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的C++程序,实现了创建顺序线性表、显示(输出)顺序线性表插入某元素及删除某元素的功能函数。 ```c++ #include<iostream> using namespace std; const int MAXSIZE = 100; // 定义线性表最大长度为100 typedef struct { int data[MAXSIZE]; // 存储元素的数组 int length; // 当前长度 } SqList; // 定义顺序线性表类型 void InitList(SqList &L) { L.length = 0; // 初始化长度为0 } void PrintList(SqList L) { for(int i = 0; i < L.length; i++) { cout << L.data[i] << " "; } cout << endl; } bool ListInsert(SqList &L, int pos, int e) { if(pos < 1 || pos > L.length + 1) { // 判断插入位置是否合法 return false; // 插入位置不合法,返回false } if(L.length >= MAXSIZE) { // 判断线性表是否已满 return false; // 线性表已满,返回false } for(int i = L.length; i >= pos; i--) { // 将pos位置及之后的元素后移 L.data[i] = L.data[i - 1]; } L.data[pos - 1] = e; // 插入元素 L.length++; // 长度加1 return true; // 插入成功,返回true } bool ListDelete(SqList &L, int pos) { if(pos < 1 || pos > L.length) { // 判断删除位置是否合法 return false; // 删除位置不合法,返回false } for(int i = pos; i < L.length; i++) { // 将pos位置及之后的元素前移 L.data[i - 1] = L.data[i]; } L.length--; // 长度减1 return true; // 删除成功,返回true } int main() { SqList L; InitList(L); ListInsert(L, 1, 1); ListInsert(L, 2, 2); ListInsert(L, 3, 3); PrintList(L); // 输出:1 2 3 ListDelete(L, 2); PrintList(L); // 输出:1 3 return 0; } ``` 在程序中,我们首先定义了一个顺序线性表类型SqList,并定义了其两个成员变量:存储元素的数组data和当前长度length。然后,我们实现了四个函数,分别是: - InitList:初始化线性表,将其长度length设为0。 - PrintList:输出线性表中的元素。 - ListInsert:在指定位置pos插入元素e,如果插入位置不合法或线性表已满,则返回false,否则返回true。 - ListDelete:删除指定位置pos的元素,如果删除位置不合法,则返回false,否则返回true。 最后,在main函数中,我们创建了一个空的顺序线性表L,并进行了一些操作,包括插入元素、删除元素和输出元素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值