概述
对于很多初学c语言的同学·,虽然都能理解数据结构中的思想,但是不一定能用c一行一行撸出一个完整的代码,我最近也正好在重新看数据结构,所以就把c语言实现数据结构源代码放出来帮助初学者。
#include <stdio.h>
#include <stdlib.h>
#define N 5
struct LNode {
int data[N];
int last;
};
typedef struct LNode *List; //给结构体取一个别名
struct LNode seqList;
List makeEmpty(List PtrL) { //对顺序表做初始化或者置为空
PtrL = (List) malloc (sizeof(seqList));
PtrL->last = -1;
return PtrL;
}
void Insert(List PtrL, int x, int i) {
if(i < 0 || i > PtrL->last+1) {
printf("插入位置不合法!");
return; //此处对插入的位置做判断,本实例中数组下标从开始。
}
if(PtrL->last == N-1) {
printf("表已满!");
return; //此处判断线性表是否已满
}
for(int j = PtrL->last; j >= i; j--) //对表中元素做后移操作,给新插入元素腾个位置
PtrL->data[j+1] = PtrL->data[j];
PtrL->last++;
PtrL->data[i] = x;
}
int dele(List PtrL, int i, int e) {
if(i <= 0 || i >= PtrL->last+1) {
printf("不存在%d个元素",i);
return -1; //表示删除元素不存在
}
e = PtrL->data[i-1];
for(int j = i; j <= PtrL->last; j++) {
PtrL->data[j-1] = PtrL->data[j];
}
PtrL->last--;
return e; //e为了记录被删除元素的值
}
int find(List PtrL, int e) {
int i;
for(i = 0; i <= PtrL->last && e != PtrL->data[i]; i++);
if(i>= 0 && i <= PtrL->last)
return i;
else
return -1; //表示查找元素不存在
}
void print(List PtrL) {
for(int i = 0; i <= PtrL->last; i++)
printf("%d ",PtrL->data[i]);
}
int main() {
List list;
int a[100], n, m, k, l;
list = makeEmpty(list); //初始化下
printf("请输入插入的个数及插入的元素:");
scanf("%d", &n);
for(int i = 0; i < n; i++) {
scanf("%d", &a[i]);
Insert(list,a[i],i); //插入5个元素
}
printf("插入元素后:");
print(list);
printf("n");
printf("请输入要查找的元素值:");
scanf("%d", &m);
printf("当前元素位于第%d位置。n",find(list,m)+1);
printf("请输入要删除的元素的位置:");
scanf("%d", &k);
l = dele(list,k,l);
printf("删除后的顺序表为:");
print(list);
printf("n");
printf("删除的元素值为:%d", l);
return 0;
}
![](https://file2.kaopuke.com:8081/files_image/2023061121/202306112103044017086.jpg)
最后
以上就是任性金针菇为你收集整理的c语言实现数据结构中顺序表的源代码的全部内容,希望文章能够帮你解决c语言实现数据结构中顺序表的源代码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复