数据结构与算法(C语言描述)——单链表
来源:互联网 发布:免费的mac清理软件 编辑:程序博客网 时间:2024/04/29 23:13
/* 单链表的存储结构及基本运算 */
#include<stdio.h>
#include<stdlib.h>
#include<stdio.h>
#include<stdlib.h>
#define OK 1 /* 函数结果状态代码 */
#define ERROR 0 /* 函数结果状态代码 */
#define ERROR 0 /* 函数结果状态代码 */
typedef int Status; /* 函数类型,其值是函数结果状态代码 */
typedef int ElemType; /* 顺序表的数据类型 */
typedef int ElemType; /* 顺序表的数据类型 */
/*构造节点*/
typedef struct LNode
{
ElemType data; /* 存数数据 */
struct LNode* next; /* 指向下一个节点 */
}LNode;
{
ElemType data; /* 存数数据 */
struct LNode* next; /* 指向下一个节点 */
}LNode;
typedef struct LNode* LinkList; /*构造链表*/
/*查找元素*/
Status GetElem(LinkList L,int position,ElemType *e)
{
int i = 1;
LinkList p = L->next;
while(p && i < position)
{
p = p->next;
i++;
}
if(!p && i>position) /* 位置不合理 */
return ERROR;
*e = p->data;
}
{
int i = 1;
LinkList p = L->next;
while(p && i < position)
{
p = p->next;
i++;
}
if(!p && i>position) /* 位置不合理 */
return ERROR;
*e = p->data;
}
/*插入元素*/
Status ListInsert(LinkList *L,int position,ElemType e)
{
int i = 1;
LinkList p = *L,q,s;
while(p && i < position)
{
p = p->next;
i++;
}
if(!p || position<=0)
return ERROR;
s = (LinkList*)malloc(sizeof(LinkList));
s->data = e;
s->next = p->next;
p->next = s;
}
{
int i = 1;
LinkList p = *L,q,s;
while(p && i < position)
{
p = p->next;
i++;
}
if(!p || position<=0)
return ERROR;
s = (LinkList*)malloc(sizeof(LinkList));
s->data = e;
s->next = p->next;
p->next = s;
}
/* 删除元素 */
Status ListDelete(LinkList *L,int position,ElemType *e)
{
int i=1;
LinkList p = *L;
while(p && i < position)
{
p = p->next;
i++;
}
if(!p || position<=0)
return ERROR;
(*e) = p->next->data;
p->next = p->next->next;
}
{
int i=1;
LinkList p = *L;
while(p && i < position)
{
p = p->next;
i++;
}
if(!p || position<=0)
return ERROR;
(*e) = p->next->data;
p->next = p->next->next;
}
/*头插法创建链表*/
void CreateListHead(LinkList *L)
{
ElemType e;
LinkList p;
(*L) = (LinkList)malloc(sizeof(LNode));
(*L) ->next = NULL;
while(scanf("%d",&e)!=EOF)
{
p = (LinkList)malloc(sizeof(LNode));
p->data = e;
p->next = (*L)->next;
(*L)->next = p;
}
}
{
ElemType e;
LinkList p;
(*L) = (LinkList)malloc(sizeof(LNode));
(*L) ->next = NULL;
while(scanf("%d",&e)!=EOF)
{
p = (LinkList)malloc(sizeof(LNode));
p->data = e;
p->next = (*L)->next;
(*L)->next = p;
}
}
void CreateListTail(LinkList *L)
{
ElemType e;
LinkList p,q;
(*L) = (LinkList)malloc(sizeof(LNode));
p = *L;
while(scanf("%d",&e)!=EOF)
{
q = (LinkList)malloc(sizeof(LNode));
q->data = e;
q->next = NULL;
p->next = q;
p = q;
}
}
{
ElemType e;
LinkList p,q;
(*L) = (LinkList)malloc(sizeof(LNode));
p = *L;
while(scanf("%d",&e)!=EOF)
{
q = (LinkList)malloc(sizeof(LNode));
q->data = e;
q->next = NULL;
p->next = q;
p = q;
}
}
/*单链表就地逆置*/
void ListReverse(LinkList *L)
{
LinkList p = (*L)->next;
LinkList q = p->next;
p->next = NULL;
p=q;
while(p)
{
q = q->next;
p->next = (*L)->next;
(*L)->next = p;
p = q;
}
}
{
LinkList p = (*L)->next;
LinkList q = p->next;
p->next = NULL;
p=q;
while(p)
{
q = q->next;
p->next = (*L)->next;
(*L)->next = p;
p = q;
}
}
/*打印链表*/
void ListDisplay(LinkList L)
{
int i=1;
LinkList p = L->next;
while(p)
{
printf("第%d个元素:%d\n",i,p->data);
i++;
p = p->next;
}
}
{
int i=1;
LinkList p = L->next;
while(p)
{
printf("第%d个元素:%d\n",i,p->data);
i++;
p = p->next;
}
}
0 0
- 数据结构与算法(C语言描述)——单链表
- 数据结构与算法分析——C语言描述3.3
- 《数据结构与算法分析—C语言描述》pdf
- 数据结构与算法分析(C语言描述)—— 读书笔记
- 数据结构与算法(C语言描述)——顺序表
- 数据结构与算法(C语言描述)——双向链表
- 读《算法与数据结构---c语言描述》
- 《数据结构与算法——C语言描述》答案 3.11 查找单链表中的特定元素(递归)
- 《数据结构与算法——C语言描述》答案 3.11 查找单链表中的特定元素(非递归)
- 数据结构与算法分析 C语言描述 单链表的实现
- 数据结构与算法分析(C语言描述)L1.1
- 《数据结构与算法分析 C语言描述》读书笔记——分治算法
- 《数据结构与算法——C语言描述》答案 3.16 删除链表中的重复元素
- 《数据结构与算法分析——c语言描述》 练习6.32 答案
- 数据结构与算法分析——c语言描述 练习3.4 答案
- 《数据结构和算法分析—C语言描述》读书笔记
- 求最大子序列和问题(读《数据结构与算法分析——C语言描述》有感)
- 《数据结构与算法——C语言描述》答案 3.15 自调整表的实现(链表法)
- 牛客网 | 从上往下打印二叉树
- LightOJ - 1040 Donation(最小生成树)
- 第4讲项目2------第三小节 转换为华氏温度值
- developer.android.com test 01
- php网站开发学习平台
- 数据结构与算法(C语言描述)——单链表
- mysql 学习记录(二十一)--调整linux I/O以提高mysql运行效率
- 动态调用CSS文件 JS文件的方法
- 字符编码笔记:ASCII,Unicode和UTF-8
- 面向对象(上)
- -Dmaven.multiModuleProjectDirectory system propery is not set.
- ubuntu 64位安装 power8模拟器
- ubuntu报错:OpenSSL is not properly installed on your system.
- 算法时间度分析