新手学习数据结构与算法---单链表的基本操作
来源:互联网 发布:初学英语单词软件 编辑:程序博客网 时间:2024/05/24 05:01
单链表操作。。。
大家指点一下。
//单链表及其基本操作 //这里的链表都是带头结点的------------- #include <stdio.h>#include <malloc.h> //用来进行动态内存分配#include <stdlib.h>typedef struct Node{char data; //数据域 struct Node * next; //指针域 }LinkList; //不要忘记这个;LinkList * SetNull(LinkList * L) //置空表操作 {L->next = NULL; //只要将第一个节点的指针域设置为NULL即可 return L; }int Length(LinkList * L) //求表长操作(带头结点),求的时候头结点不算 {LinkList * p;int n = 0;p = L->next; //从头结点后面的首元素节点开始计数 while(p != NULL) //循环计数 { p = p->next; n++;}return n;} LinkList * NumberGet(LinkList * L, int i) //从带头结点的链表中找到第i个结点(头结点不算){int j = 1;LinkList * p;p = L->next;while(p != NULL && (j < i)) //用j主要是防止i可能有:i<=0,i>n {p = p->next;j++;}if(i == j)return p;elsereturn NULL; //若未找到则返回NULL } LinkList * ValueGet(LinkList * L, char c) //按值查找某个结点{LinkList * p;p = L->next;while(p != NULL){if(c == p->data) //把c写在前面是防止写成=,方便报错 break; //若找到则直接跳出 elsep = p->next;}return p; }void Insert(LinkList * L, int i, char c) //链表的插入操作,在第i个位置插入值c(头结点不算){int j = 1;LinkList * p, * S;p = L; //为什么这个不是p = L->next??? ,后面说明 while(p != NULL && (j < i)) //在j为i这个位置插入 {p = p->next;j++;}if(p == NULL) //检测一下p是否为NULLprintf("序号超过范围\n");else{S = (LinkList *)malloc(sizeof(LinkList));S->data = c;S->next = p->next; //就是这个原因,这时p正好是i前面的那个结点 } p->next = S; } void Delete(LinkList * L, int i){int j = 1;LinkList * p, *T;p = L; //不用p = L->next 原因同上while(p != NULL && (j < i)){p = p->next;j++;}if(p != NULL && (p->next != NULL)) //确定第i个跟第i-1个都不是NULL {T = p->next;p->next = T->next;free(T); //释放这个结点 }}LinkList * CreatList() //建立单链表 {char c;LinkList * head, * L, * S;L = (LinkList *)malloc(sizeof(LinkList));head = L;L->next = NULL; //先建一个空链表 while(c != '#') { S = (LinkList *)malloc(sizeof(LinkList)); S->data = c; S->next = L->next; //让S->next变为NULL L->next = S; c = getchar();}return head;} void PrintList(LinkList * p){p = p->next; //头结点不打印 while(p != NULL){printf("%4c", p->data);p = p->next;}}int main(){//自己定义测试 }
- 新手学习数据结构与算法---单链表的基本操作
- 新手学习数据结构与算法---堆栈基本操作
- [数据结构与算法分析] 单链表基本操作的实现
- 《数据结构与算法》-单链表基本操作的C语言实现
- 数据结构与算法——单链表的基本操作
- 新手学习数据结构与算法---链表的箱子排序
- 新手学习数据结构与算法---开始篇
- 新手学习数据结构与算法---冒泡排序
- 新手学习数据结构与算法---单链表(C++版, 跟C还是有点差别的)
- 数据结构与算法系列-串-串的基本操作
- 数据结构与算法-链表的基本操作---ShinPans
- 算法与数据结构--图的实现、基本操作及应用
- 算法与数据结构-堆的基本操作C语言实现
- 算法与数据结构-队列的基本操作C语言实现
- 算法与数据结构-栈的基本操作C语言实现
- 算法与数据结构-堆的基本操作C语言实现
- 新手学习数据结构与算法---快速排序算法
- 新手学习数据结构与算法---二分查找算法
- 开始写博客,记录自已的程序员人生
- SQlite对时间的操作
- javascript中创建节点修改节点删除节点
- 实现异步处理----AsyncTask
- 大部分企业建了网站却不会用
- 新手学习数据结构与算法---单链表的基本操作
- wince触摸屏
- 人生十大“折腾”
- 最近关于ubuntu几个问题到解决方法
- 黑马程序员_配置classpath临时变量时是加;好,还是不加;好呢?
- Android的性能测试
- android WifiManager
- android WIFI检测与设置
- 窗体的几种默认布局