c语言实现数据结构中的链表源代码
来源:互联网 发布:我要做淘宝优惠券群主 编辑:程序博客网 时间:2024/05/07 23:44
#include <stdio.h>#include <stdlib.h>typedef struct LNode *List;struct LNode {int data;List next;};struct LNode L;List InitList(List PtrL) {PtrL = (List) malloc(sizeof(L));PtrL->next = NULL;return PtrL;}List CreateFromHead(List PtrL, int x) {//头插法创建链表,最先创建的元素为链表尾 List s;s = (List) malloc (sizeof(L));s->data = x;s->next = PtrL->next;PtrL->next = s;return PtrL;}List CreateFromTail(List PtrL) {//尾插法创建链表List s, r;int a[20], n;r = PtrL;printf("请输入要创建链表元素的个数:"); scanf("%d", &n);printf("请输入要创建链表元素的值:"); for(int i = 0; i < n; i++){scanf("%d", &a[i]);s = (List) malloc (sizeof(L));s->data = a[i];s->next = r->next;r->next = s;r = s;}return PtrL;}int Length(List PtrL) {List p;int i = 0;p = PtrL->next;while(p) {i++;p = p->next;}return i;}List FindKth(List PtrL, int k) {//查找链表中第k个节点 List p = PtrL;int i = 0;while(p != NULL && i < k) {p = p->next;i++;}if(i == k) return p;else return NULL;}List Insert(List PtrL, int i, int x) {List p, s;if(i == 1) {s = (List) malloc(sizeof(L));s->data = x;s->next = PtrL;return s;}p = FindKth(PtrL,i-1);if(p == NULL) {printf("参数i错");return NULL; }else {s = (List) malloc(sizeof(L));s->data = x;s->next = p->next;p->next = s;return PtrL;}}List Delete(List PtrL, int i) {List p, s;if(i == 1) {s = PtrL;if(PtrL != NULL) PtrL = PtrL->next;else return NULL;free(s);return PtrL;}p = FindKth(PtrL,i-1);if(p == NULL) {printf("第%d个结点不存在",i-1);return NULL;}else if(p->next == NULL) {printf("第%d个结点不存在",i);return NULL;}else {s = p->next;p->next = s->next;free(s);return PtrL;} }void print(List PtrL) {List start;for(start = PtrL->next; start != NULL; start=start->next)printf("%d ",start->data);}int main() {List list, s;int n, m;list = InitList(list);list = CreateFromTail(list);//取决你用头插法创建链表还是尾插法创建链表,为了让输出看着简单点,插入和删除我就直接写死了 printf("使用尾插法创建链表为:");print(list);printf("\n");list = Insert(list,3,9);printf("插入元素后的链表为:");print(list);printf("\n");m = Length(list);printf("链表的长度的为:%d", m);printf("\n");Delete(list,2);printf("删除结点后的链表为:");print(list);printf("\n");m = Length(list);printf("删除结点后的链表长度为:%d", m);printf("\n");s = FindKth(list,3);printf("您查找的节点值为:%d", s->data);return 0;}
1 0
- c语言实现数据结构中的链表源代码
- c语言实现数据结构顺序表源代码
- 数据结构中的排序——C语言实现排序源代码
- c语言实现数据结构中顺序表的源代码
- C语言实现数据结构中的链栈
- C语言实现数据结构中的链队列
- C语言实现数据结构中的顺序表
- C语言实现数据结构中的循环链表
- c语言数据结构链表源代码----笛风读书笔记系列
- 数据结构中单链表的实现+单链表的C语言实现源代码
- C语言实现数据结构的链表
- [数据结构]C语言链表实现
- 【数据结构】C语言实现顺序链表
- 数据结构 链表的实现(C语言)
- 【数据结构】C语言实现链表
- C语言数据结构-栈-链表实现
- C语言实现LinkedList链表数据结构
- [数据结构]C语言链表实现
- git命令之git rebase 的用法
- mysql忘记root密码如何重新设置
- Centos图形界面和命令界面模式切换
- weex资源图片
- private static final long serialVersionUID的作用
- c语言实现数据结构中的链表源代码
- AndroidAsync
- 安卓5.0源码编译及烧录到真机
- strange IOC框架 塔防游戏实例应用 (三)
- 题目:利用OpenCV3.1.0从磁盘加载并显示一副图像
- ASSIGN COMPONENT <comp> OF STRUCTURE <s> TO <FS>
- 使用hibernate tools插件生成POJO
- 深入理解SELinux SEAndroid(最后部分)
- [总结]怎么让adb识别修改了VID和PID的手机(移动设备)