线性表-链式存储结构(C语言实现)
参考:大话数据结构(程杰)
博客:http://cj723.cnblogs.com/
豆瓣:https://book.douban.com/subject/6424904/
主要完成功能包括:
- 表的定义
- 表初始化
- 断链表是否为空
- 清空链表
- 打印(遍历)链表
- 头插法创建链表
- 尾插法创建链表
- 链表长度
- 取链表第i个值
- 链表数据元素位置查找(顺序查找)
- 链表第i个位置插入新元素
- 链表删除第i个元素
- 链表翻转(申请内存)
- 链表翻转(未申请内存版本)
代码:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define MAXSIZE 1000
typedef int Status;
typedef int ElemType;
typedef struct Node{
ElemType data;
struct Node *next;
}Node;
typedef struct Node *LinkList;
/* 顺序链表的初始化 */
Status InitList(LinkList *L)
{
*L = (LinkList)malloc(sizeof(Node));
if (!(*L))
return ERROR;
(*L)->next = NULL;
return OK;
}
Status ListEmpty(LinkList L)
{
if(L->next)
return FALSE;
else
return TRUE;
}
/* 清空链表,头指针的指针域为空 */
Status ClearList(LinkList *L)
{
LinkList p,q;
p = (*L)->next;
while(p)
{
q = p->next;
free(p);
p = q;
}
(*L)->next = NULL;
return OK;
}
/* 打印顺序链表 */
Status PrintLinkList(LinkList L)
{
LinkList s = L->