数据结构实验一(2)
2015-11-01 00:17
267 查看
单链表的操作
① 输入一组整型元素序列,使用尾插法建立一个带有头结点的单链表。
② 实现该线性表的遍历。
③ 在该单链表的第i个元素前插入一个整数。
④ 删除该单链表中的第i个元素,其值通过参数将其返回。
① 输入一组整型元素序列,使用尾插法建立一个带有头结点的单链表。
② 实现该线性表的遍历。
③ 在该单链表的第i个元素前插入一个整数。
④ 删除该单链表中的第i个元素,其值通过参数将其返回。
#include<stdio.h> #include<stdlib.h> typedef struct{ int *a; int length; int listsize; }sq_list; void initList(sq_list &p) { int n; scanf("%d",&n); p.length=n; p.a=(int*)malloc(100*sizeof(int)); //开辟最大存储空间 if (!p.a) exit(0); for (int i=1;i<=n;i++) scanf("%d",&p.a[i]); } void bianli(sq_list p) //遍历一遍,输出数值 { int i; for (i=1;i<=p.length;i++) printf("%d ",p.a[i]); printf("\n"); } void search(sq_list p,int value) { int i=0; while (i<=p.length&&p.a[i]!=value) i++; if (i>p.length) printf("该表中没有此值.\n"); else printf("位置是%d\n",i); } void insert(sq_list &p,int value,int i) { int j; if (i<1||i>p.length+1) exit(0); if (p.length>=p.listsize) p.a=(int*)realloc(p.a,(p.listsize+100)*sizeof(int)); if (!p.a) exit(0); p.length++; for (j=p.length;j>=i;j--) p.a[j+1]=p.a[j]; p.a[i]=value; } void dele(sq_list &p,int i,int &b) { int j; if (i<1||i>p.length) exit(0); b=p.a[i]; for (j=i;j<=p.length-1;j++) p.a[j]=p.a[j+1]; p.length--; bianli(p); printf("%d\n",b); } int main() { int i,value,b; sq_list p; initList(p); bianli(p); printf("进行查找:\n"); scanf("%d",&value); search(p,value); printf("进行插入:\n"); scanf("%d%d",&i,&value); insert(p,value,i); bianli(p); printf("进行删除:\n"); scanf("%d",&i); dele(p,i,b); return 0; }
相关文章推荐
- 数据结构实验一(1)
- [LeetCode] Path Sum 求二叉树中满足要求的路径
- 标准 BT656 并行 数据结构 详解
- Java数据结构与算法之优先级队列
- MySQL索引背后的数据结构及算法原理
- C语言数据结构
- 无向图
- 中国大学MOOC-陈越、何钦铭-数据结构 统计工龄
- 【数据结构与算法】——基数排序
- 【数据结构】队列以及两个队列实现一个栈
- 【数据结构】栈以及两个栈实现一个队列
- 【数据结构】逆波兰表达式
- 【数据结构】一个数组实现两个栈
- 【数据结构】实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 【数据结构】检查元素出栈的合法性
- 【数据结构】用栈实现迷宫
- UVa 1400 "Ray, Pass me the dishes!"(区间最大连续数组和)
- 数据结构之递归算法
- 04-树4 是否同一棵二叉搜索树
- Digits Count(线段树,区间更新)