线性表——单链表
来源:互联网 发布:大话数据库 知乎 编辑:程序博客网 时间:2024/06/14 02:43
单链表的特点:
如果一个结点只有一个指针域,称为单链表(Single Linked List)
#include <stdio.h>
#include <stdlib.h>
typedefchar DataType;
struct ListNode//定义键表中的结点
{
DataType data;//结点
structListNode *next;//指向后继结点的地址。结构体本身的指针。
};
typedefstructListNode *LinkList;//给结构的指针起别名。
void init(LinkList *s);
int ListLength(LinkList li);
LinkList GetNode(LinkList g,int i);
int main(int argc,constchar * argv[])
{
LinkList pHead =NULL;//表示它是单链表的头指针。
//等效于。 struct LIstNode *pHead。
//LinkList pNode ;//定义一个指向结点的指针。
//等效于。struct ListNode *pnode;
init(&pHead);
int leng=ListLength(pHead);
printf("%d\n",leng);
return0;
}
void init(LinkList *s)//初始化。
{
*s=NULL;
}
int ListLength(LinkList li)//求表长。
{
int nLength=0;
while(li!=NULL)
{
li=li->next;
nLength++;
}
return nLength;
}
LinkList GetNode(LinkList g,int i)//取i的结点。
{
int j=0;
for (; g&&j<i; j++)
{
g=g->next;
}
if (j<i)
{
return g;
}
returnNULL;
}
LinkList Locate(LinkList l,DataType x)//查找元素的位置;
{
while (l)
{
if (l->data==x)
{
return l;
}
l=l->next;
}
returnNULL;
}
void Insertlist(LinkList *p,DataType x,int i)//插入节点
{
//生成存储数据的新节点。
LinkList pNode=NULL;
pNode=(LinkList)malloc(sizeof(LinkList));
pNode->data=x;
pNode->next=NULL;
int ListLen=ListLength(*p)-1;
if (i<=0)//插入在第一个节点前面。
{
pNode->next=*p;
*p=pNode;
}
elseif (i>ListLen)//插入在最后一个节点的后面。
{
GetNode(*p, ListLen)->next=pNode;
}
else//插入在节点的中间。
{
LinkList p1=GetNode(*p, i-1);
pNode->next=p1->next;
p1->next=pNode;
}
free(pNode);
}
void Delete(LinkList *p,int n)//删除节点。
{
LinkList p2=NULL;
if (n==0)
{
p2=*p;
*p=(*p)->next;
}
else
{
LinkList P1=GetNode(*p, n-1);
p2=P1->next;
P1->next=p2->next;
free(p2);
}
}
- 线性结构—线性表
- 线性表——单链表
- 线性表——单链表
- 线性表——单链表
- 数据结构 线性表—单链表
- 2.线性表—单链表
- [数据结构]线性结构——线性表
- 线性表—线性表的合并
- 数据结构—线性表
- 线性表—链式
- 数据结构—线性表
- 数据结构—线性表
- 线性表—定义
- 数据结构—线性表
- 线性表——单链表,顺序表
- 转:线性表——单链表
- 线性表综合实验—单链表
- 数据结构——线性表(一)线性表的顺序存储和单链表
- ArcGIS Server工作组级和企业级的区别
- 操作系统笔试题
- C#水晶报表教程
- 浅谈return (app->main(argc-1, argv+1));
- VMware vSphere 5.5 官方指南[英文版] 打包下载
- 线性表——单链表
- vim常用命令总结
- 2013年阿里巴巴测试开发类笔试题 9-22号晚上考的
- Linux虚拟文件系统(节点路径搜索)
- mysql不能用limit的问题
- C++代码中的内存泄漏检查(一)
- TI LP5560 driver code
- 我读过的最好的epoll讲解--转自”知乎“
- ORACLE启动与关闭命令详解