1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 数组的数据查找c语言 【查找数组面试题】面试问题:c语言实现数据… - 看准网...

数组的数据查找c语言 【查找数组面试题】面试问题:c语言实现数据… - 看准网...

时间:2022-03-27 04:24:45

相关推荐

数组的数据查找c语言 【查找数组面试题】面试问题:c语言实现数据… - 看准网...

对于很多初学c语言的同学·,虽然都能理解数据结构中的思想,但是不一定能用c一行一行撸出一个完整的代码,我最近也正好在重新看数据结构,所以就把c语言实现数据结构源代码放出来帮助初学者。

#include

#include

#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;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。