数据结构(严蔚敏)算法2.3-算法2.4

 1 //线性表的插入与删除
 2 #include <stdio.h>
 3 #include <stdlib.h>
 4 #define LIST_INIT_SIZE 100   //线性表存储空间的初试分配量
 5 #define LISTINCREMENT 10      //线性表存储空间的分配增量
 6 #define ERROR 0
 7 #define OK 1
 8 typedef struct{
 9     int *elem; //存储空间的基址
10     int length;//当前长度
11     int listsize;//当前分配的存储容量
12 }Sqlist;
13 //函数声明
14 int Initlist(Sqlist *L);//线性表的初始化
15 int ListInsert(Sqlist *L,int i,int e);//在顺序表第I个位置之前插入新元素e
16 int ListDelete(Sqlist *L,int i);//删除第i个元素
17 int main(void){
18     Sqlist L;
19     int i,len,e;
20     if(Initlist(&L)){
21     printf("请输入线性表的长度");
22     scanf("%d",&len);
23     L.length=len;
24     printf("请输入线性表的元素");
25     for(i=0;i<len;i++){
26         scanf("%d",L.elem+i);
27         L.listsize--;
28     }
29     printf("请输入要插入的元素");
30     scanf("%d",&e);
31     printf("请输入要插入的位置");
32     scanf("%d",&i);
33 }
34     if(ListInsert(&L,i,e)){
35         for(i=0;i<L.length;i++)
36             printf("%d ",L.elem[i]);
37     }
38
39     printf("请输入要删除的位置");
40     scanf("%d",&i);
41     if(ListDelete(&L,i)){
42         for(i=0;i<L.length;i++)
43             printf("%d ",L.elem[i]);
44     }
45     return 0;
46 }
47
48  int Initlist(Sqlist *L){
49      L->elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));
50      if(!L->elem) exit(ERROR);
51     L->length=0;
52     L->listsize=LIST_INIT_SIZE;
53     return OK;
54  }
55  int ListInsert(Sqlist *L,int i,int e){
56      int *newbase,*q,*p,a;
57      if(i<1||i>L->length+1) return ERROR;  //I值不合法
58      if(L->length>=L->listsize){  //当前存储空间已满
59          newbase=(int *)realloc(L->elem,(L->listsize+LISTINCREMENT)*sizeof(int));
60          if(!newbase) exit(ERROR); //存储分配失败
61          L->elem=newbase;//新基址
62          L->listsize+=LISTINCREMENT;//增加存储容量
63      }
64     q=&(L->elem[i-1]);
65     a=L->length;
66     for(p=&(L->elem[a-1]);p>=q;--p)    *(p+1)=*p;
67     *q=e;
68     ++L->length;
69     return OK;
70  }
71  int ListDelete(Sqlist *L,int i){
72      int *p,*q;
73      if(i<1||i>L->length) return ERROR;//i值不合法
74     p=&(L->elem[i-1]);//被删除元素的位置
75     q=L->elem+L->length-1;//表尾元素的位置
76     for(++p;p<=q;++p)    *(p-1)=*p;//被删元素之后的元素向左移动
77     --L->length;//表长减1
78     return OK;
79  }

原文地址:https://www.cnblogs.com/suqf/p/9734279.html

时间: 2024-10-12 14:00:29

数据结构(严蔚敏)算法2.3-算法2.4的相关文章

[数据结构严蔚敏]线性表-算法2.1

/*algorithm-2.1.c*/ 1 #include<stdio.h> 2 #include<linear_list_ADT.h> 3 4 int main(void){ 5 List LA,LB; 6 int LA_len,LB_len; 7 InitList(&LA); 8 InitList(&LB); 9 /*********get LIST_A***********/ 10 printf("please input length of LA

基于c语言数据结构+严蔚敏——线性表章节源码,利用Codeblocks编译通过

白天没屌事,那我们就来玩玩线性表的实现吧,快要失业了,没饭吃了咋整哦 题目描述假设利用两个线性表LA和LB分别表示两个集合A和B(即:线性表中的数据元素即为集合中的成员),现要求一个新的集合A=A∪B.这就要求对线性表做如下操作:扩大线性表LA,将存在于线性表LB中而不存在于线性表LA中的数据元素插入到线性表LA中去.只要从线性表LB中依次取得每个元素,并依值在线性表LA中进行查访,若不存在,则插入之. #ifndef FUNC_H_INCLUDED #define FUNC_H_INCLUDE

kmp算法--求字符串子串--《数据结构》严蔚敏

// exam1.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void get_next(int* &next,char* s) { int j=0; int i=1; int len=strlen(s); next=(int*)malloc(len*sizeof(int)); memset(next,0,len*sizeof(int));

最短路径---Dijkstra迪杰特斯拉算法---《数据结构》严蔚敏

// exam1.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #include <stack> using namespace std; #define MAXVEX 20 #define INT_MAX 10000 typedef struct ArcNode { int adj; void* info; }ArcNode; typedef ArcNode AdjMat[MAX

Floyd(弗洛伊德算法)---每对顶点的最短路径---《数据结构》严蔚敏

// exam1.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #include <stack> using namespace std; #define MAXVEX 20 #define INT_MAX 10000 typedef struct ArcNode { int adj; void* info; }ArcNode; typedef ArcNode AdjMat[MAX

7-9-有向图无环拓扑排序-图-第7章-《数据结构》课本源码-严蔚敏吴伟民版

课本源码部分 第7章  图 - 有向无环图拓扑排序 ——<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑        本源码引入的文件  链接? Status.h.SequenceStack.c.ALGraph.c    

7-8-无向图的关节点-图-第7章-《数据结构》课本源码-严蔚敏吴伟民版

课本源码部分 第7章  图 - 无向图的关节点 ——<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑        本源码引入的文件  链接? Status.h.ALGraph.c        相关测试数据下载  链接? 数

3-3-行编辑程序-栈和队列-第3章-《数据结构》课本源码-严蔚敏吴伟民版

课本源码部分 第3章  栈和队列 - 行编辑程序 ——<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑        本源码引入的文件  链接? SequenceStack.c        相关测试数据下载  链接? 无数据

10-11-基数排序-内部排序-第10章-《数据结构》课本源码-严蔚敏吴伟民版

课本源码部分 第10章  内部排序 - 基数排序 ——<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑        本源码引入的文件  链接? Status.h.Scanf.c        相关测试数据下载  链接? 数据