10.6静态链表
来源:互联网 发布:福昕pdf编辑器for mac 编辑:程序博客网 时间:2024/06/06 09:03
//10.6 静态链表#include <stdio.h>#include <stdlib.h>#define MAXSIZE 30typedef struct{char data; //data 为节点的数信息int cursor; //cursor 标识直接后继节点}SNode; //静态链表节点类型void InsertList(SNode L[], int i, char x) //在静态链表中插入元素{int j, j1, j2, k;j = L[0].cursor; //j 指向第一个数据节点if (1 == i){if (0 == j) //静态链表为空{L[1].data = x; //将小放入节点L[1]中L[0].cursor = 1; //头指针cursor 指向这个新插入的节点L[1].cursor = 0; //置链尾标志}else{k = j + 1;while (k != j) //在数组中循环查找存放x 的位置{if (L[k].cursor == -1) //找到空位置{break;}else{k = (k + 1) % MAXSIZE; //否则查找下一个位置}}if (k != j) //在数组中找到一个空位置来存放x{L[k].data = x;L[k].cursor = L[0].cursor; //将其插入到静态链表表头L[0].cursor = k;}else{printf("List overflow!\n"); //链表已满无法插入}}}else //i != 1 不是作为第一个节点插入{k = 0;while (k < i - 2 && j != 0) //查找第i-1 个节点, j 不等于0 则表示{k++;j = L[j].cursor;}if (0 == j) //查完整个静态链表未找到第i-1 个节点,即链表长度小于i-1 个节点{printf("Insert error\n");}else{j1 = j; //找到第i-1 个节点j2 = L[j].cursor; //用j2 保存原L[j].cursor 值,此值为第i个节点的位置值k = j + 1;while (k != j) //在数组中循环查找存放x 的位置{if (L[k].cursor == -1) //找到空位置{break;}else{k = (k + 1) % MAXSIZE; //否则查找下一个位置}}if (k != j) //在数组中找到一个空位置来存放x{L[k].data = x;L[j1].cursor = k; //作为第i 个节点链入倒静态链表L[k].cursor = j2; //新节点之后再链接上原第i 个节点}else{printf("List overflow!\n"); //链表已满,无法插入}}}}void print(SNode *L){int i;i = L[0].cursor; //从静态链表的表头元素开始输出while (i != 0){printf("%c ", L[i].data);i = L[i].cursor;}printf("\n");}int main(){SNode L[MAXSIZE];int i;char x;for (i = 1; i < MAXSIZE; i++) //静态链表初始化{L[i].cursor = -1;}L[0].cursor = 0; //静态链表初始为空标志(0 为链尾)i = 1;printf("Input element of llist\n"); //建立静态链表scanf("%c", &x);while (x != '\n'){InsertList(L, i, x);i++;scanf("%c", &x);}printf("Input site and element of insert\n");scanf("%d %c", &i, &x); //输入要插入元素的位置InsertList(L, i, x); //在静态链表中插入元素printf("Output list\n");print(L); //输出静态链表return 0;}
阅读全文
0 0
- 10.6静态链表
- 静态链表
- VB静态链表
- 静态链表
- 静态链表
- 静态链表
- 静态链表
- 静态链表
- 静态链表实例
- 静态链表
- 静态链表。实现。
- 静态链表
- 静态链表
- 静态链表例子
- 静态链表模版
- 静态链表
- 【数据结构】静态链表
- 静态链表
- linux下安装redis并且启动
- java中构造函数
- linux基础命令详解之文件管理
- Mybatis+Oracle批量插入
- hdu-1863-畅通工程
- 10.6静态链表
- 学习任何编程语言,一定要有归零的态度。
- SpringBoot -SpringBoot学习
- 归并排序
- Codeforces-191C: Fools and Roads(LCA)
- 51单片机实验 2017年11月16日
- JAVA错误: 找不到或无法加载主类
- jdk8学习总结
- Spark streaming&storm流计算的相关对比