1、顺序链表
//.h文件
#define MaxSize 50
typedef char ElemType;
typedef struct {
ElemType elem[MaxSize];
int length;
}SqList;
//.cpp文件
void InitList(SqList *&L){
L=(SqList*)malloc(sizeof(ElemType)*MaxSize);
L->length=0;
}
void DestroyList(SqList *L){
free(L);
}
int ListEmpty(SqList *L){
return L->length==0;
}
int ListLength(SqList *L){
return L->length;
}
void DispList(SqList *L){
int i;
if(ListEmpty(L))return;
for(i=0;i<L->length;i++){
printf("%c",L->elem[i]);
}
printf("\n");
}
int GetElem(SqList *L,int i,ElemType& e){
if(i<1||i>=L->length){
return 0;
}
e=L->elem[i-1];
return 1;
}
int LocateElem(SqList *L,ElemType e){
int i=0;
while(i<L->length&&L->elem[i]!=e)i++;
return i>=L->length?0:i+1;
}
int ListInsert(SqList * &L,int i,ElemType e){
int j;
if(i<1||i>L->length+1)
return 0;
i--;
for (j=L->length; j>i; j--) {
L->elem[j]=L->elem[j-1];
}
L->elem[i]=e;
L->length++;
return 1;
}
int ListDelete(SqList * &L,int i,ElemType &e){
int j;
if(i<1||i>L->length+1)
return 0;
i--;
for (j=i; j<L->length-1; j++) {
L->elem[j]=L->elem[j+1];
}
L->length--;
return 1;
}
2、链式链表
//.h文件
typedef char ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LinkList;
//.cpp文件
#include "LinkList.h"
void InitList(LinkList *&L)
{
L=(LinkList*)malloc(sizeof(LinkList));
L->next=NULL;
}
void DestroyList(LinkList* &L)
{
LinkList *p=L,*q=p->next;
while (q!=NULL) {
free(p);
p=q;
q=p->next;
}
free(p);
}
int ListEmpty(LinkList* L)
{
return L->next==NULL;
}
int ListLength(LinkList* L)
{
LinkList *p=L;int i=0;
while (p->next!=0) {
i++;
p=p->next;
}
return i;
}
void DispList(LinkList* L)
{
LinkList *p=L;
while (p->next!=NULL) {
p=p->next;
printf("%c",p->data);
}
printf("\n");
}
int GetElem(LinkList* L,int i,ElemType &e)
{
int j=0;
LinkList *p=L;
while(j<i&&p!=NULL){
j++;
p=p->next;
}
if(p==NULL){
return 0;
}else{
e=p->data;
return 1;
}
}
int LocateElem(LinkList *L,ElemType e)
{
LinkList *p=L->next;
int n=1;
while (p!=NULL&&p->data!=e) {
p=p->next;
n++;
}
if(p==NULL){
return 0;
}else{
return n;
}
}
int ListInsert(LinkList* &L,int i, ElemType e)
{
int j=0;
LinkList *p=L;
while (j<i-1&&p!=NULL) {
j++;
p=p->next;
}
if(p==NULL){
return 0;
}else{
LinkList *q=(LinkList *)malloc(sizeof(LinkList));
q->data=e;
q->next=p->next;
p->next=q;
return 1;
}
}
int ListDelete(LinkList* &L,int i,ElemType &e)
{ int j=0;
LinkList *p=L,*q;
while(j<i-1&&p!=NULL){
j++;
p=p->next;
}
if(p==NULL){
return 0;
}else{
if(p->next!=NULL){
q=p->next;
p->next=q->next;
free(q);
return 1;
}else{
return 0;
}
}
}
分享到:
相关推荐
1.使用Python语言实现链表数据结构 2.基于类封装思想 3.实现链表增删改查功能 4.有测试数据
数据结构顺序链表的实现数据结构顺序链表的实现数据结构顺序链表的实现数据结构顺序链表的实现数据结构顺序链表的实现数据结构顺序链表的实现
该程序采用C语言,利用到数据结构-链表的相关知识实现通讯录管理系统,用文本方式存储数据。
数据结构 栈 链表实现 c++ 是模板实现的
主要介绍了C语言 数据结构之链表实现代码的相关资料,需要的朋友可以参考下
严蔚敏-数据结构--链表实现c++实现 还不错哦!``
数据结构 静态链表的实现 数据结构 静态链表的实现 数据结构 静态链表的实现 数据结构 静态链表的实现 数据结构 静态链表的实现 数据结构 静态链表的实现
数据结构 基于链表实现的优先队列 Cpp文件
链表 实现 c++ cpp 数据结构 作业 链表 实现 c++ cpp 数据结构 作业
数据结构C语言链表的实现
通讯录管理系统数据结构C语言版链表实现实验报告.doc
数据结构实现C++线性链表,实现增删改查基本方法
用链表实现的关于数的阶乘问题,让你对链表的结构有更充分的了解。。。
数据结构,链表的各种操作(C语言实现),包含创建,销毁,置空等操作。
Java语言编写的数据结构-链表实现。包括顺序表和单链表、双链表
数据结构 作业 链表的操作 完美链表 包括链表的 构造 数值的插入 删除 几种排序。。。。
此为数据结构实习之链表逆置算法实现,简单简短,适合新手阅读学习
数据结构课程的链表类的C++实现,搜索,删除,插入,查找等函数
数据结构作业 链表实现 构造 数值 插入 删除 查找 排序 的完美实现 这是可执行的文件 cpp格式 是用c语言编写的