博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用数组模拟链表操作 C实现~
阅读量:4216 次
发布时间:2019-05-26

本文共 1309 字,大约阅读时间需要 4 分钟。

用data数组存储数据, 为了 方便 从下表为1开始存储。

用数组right存储当前序列每一元素的的下一位置的索引。

#include
#define NOTEXIST -1int right[101], data[101];void init_linklist(int n) { int i, t, len; for(i = 1; i <= n; i++ ){ scanf("%d",&data[i]); } for(i = 1; i <= n; i++ ){ if(i != n){ right[i] = i+1;//初始数据的索引 } else right[i] = 0; } } int find_pre(int x)//找当前位置的前一位置并返回 { int t = 1; while(right[t] != 0 && data[right[t]] != x){ t = right[t]; } if(right[t] == 0){ return NOTEXIST; } else return t; } // 由于数组大小固定不可变 所以 这里不能插入到第一个位置 void insert(int *n, int pos, int x)//插入元素到pos 前一位置 { (*n)++; int len = *n; data[len] = x; int t = find_pre(data[pos]); printf("t = %d\n",t); right[len] = right[t]; right[t] = len; } int delete_data(int head, int x)//删除 元素 x { if(x == data[1]){//处理 删除的是第一个元素的情况 head = head+1; return head; } int t = find_pre(x);//找到 该元素的前一个位置 if(t == -1){ return NOTEXIST; } int tmp = right[t]; //删除操作 right[t] = right[tmp]; right[tmp] = -1; return head; } void print_list(int head)//打印 链表 { int t = head; while( t != 0){ printf("%d ",data[t]); t = right[t]; } } int main() { int n, head; head = 1; scanf("%d",&n); init_linklist(n); int x; scanf("%d",&x); insert(&n, 2, x);// head = delete_data(head, 5); print_list(head); return 0; }

转载地址:http://faimi.baihongyu.com/

你可能感兴趣的文章
cocos2dx --- 按钮点击居中放大
查看>>
cocos2dx menu位置计算
查看>>
cocos2dx资源加载机制(同步/异步)
查看>>
cocos2dx C++调用java -- 字符串传递
查看>>
git学习网站
查看>>
JavaScript 学习网站
查看>>
cocos2dx java调用c++ -- 字符串传递
查看>>
CCScaleTo与CCScaleBy比较
查看>>
cocos2dx CCObject引用计数,内存释放分析(1)
查看>>
cocos2dx2.X 编译时,传递编译选项
查看>>
ccCArray.cpp 文件
查看>>
cocos2dx 屏幕大小
查看>>
libgdx: 2D Particle Editor工具使用
查看>>
eclipse 给jar库添加源码
查看>>
3.0正式版环境搭建(4)-- 运行(3)创建的工程
查看>>
C++ 枚举声明 enum 和 enum class
查看>>
Python optionParser模块的使用方法
查看>>
android 消灭星星出错
查看>>
PyCharm 教程(三)Hello world!
查看>>
PyCharm: 显示源码行号
查看>>