c语言实现数据结构中顺序表的源代码

来源:互联网 发布:快递软件哪个好 编辑:程序博客网 时间:2024/04/29 02:23

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

#include <stdio.h>#include <stdlib.h>#define N 5struct 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;elsereturn -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;} 


1 0
原创粉丝点击