c/c++实现顺序表和单链表
2017-03-18 21:08
405 查看
实现基于C/C++的数据结构的顺序表,此程序未经过严格实验,只是提供大概思路
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
typedef int DataType;
typedef struct node
{
DataType data[MAXSIZE];
int length;
}SeqList;
typedef SeqList *PSeqList;
//init the SepList
PSeqList init_SeqList()
{
PSeqList s=(PSeqList)malloc(sizeof(SeqList));
if(s)
s->length=0;
return s;
}
void destroy_SeqList(PSeqList s)
{
if(s)
free(s);
s=NULL;
return;
}
int length_SeqList(PSeqList s)
{
if(s)
return s->length;
else
return (-1);
}
int location_SeqList(PSeqList s,DataType d)
{
int i=0;
if(!s)
{
printf("the list doesn't exist'");
return (-1);
}
else
{
while(i<s->length && d!=s->data[i])
i++
if(i>=s->length)
return 0;
else
return i+1;
}
}
int main()
{
return 0;
}
实现基于C/C++的数据结构的单链表,此程序未经过严格实验,只是提供大概思路
#include<stdio.h>
#include<stdlib.h>
typedef int DataType;
typedef struct node
{
DataType data;
struct node *next;
}LNode,*LinkList;
LinkList creat_LinkList()
{
LinkList H;
H=(LinkList)malloc(sizeof(LNode));
if(H)
H->next=NULL;
return H;
}
void destroy_LinkList(LinkList h)
{
LinkList p,q;
if(!h)
return;
p=H;
while(p)
{
q=p;
p=p->next;
free(q);
}
h=NULL;
}
int length_LinkList(LinkList h)
{
LinkList p;
int i=-1;
p=h;
while(p)
{
i++;
p=p->next;
}
return i;
}
LinkList locate_LinkList(LinkList h,DataType x)//use data
{
LinkList p;
p=h->next;
while(p!=NULL && p->data!=x)
p=p->next;
return p;
}
LinkList locate_LinkList(LinkList h,int i)//use position
{
LinkList p;
int j=0;
p=h->next;
while(p && j<i)
{
j++;
p=p->next;
}
if(j!=i || !p)
{
printf("the parameter i is wrong or the linklist does not exist")
return (-1);
}
return p;
}
int insert_LinkList(LinkList h,int i,DataType x)
{
LinkList p,q;
p=locate_LinkList(h,i-1);
if(!p)
{
printf("i is wrong")
return -1;
}
q=(LinkList)malloc(sizeof(LNode));
if(q=NULL)
{
printf(" memory allcation failure")
return 0;
}
q->data=data;
q->next=p->next;
p->next=q;
return 1;
}
int delete_LinkList(LinkList h,int i)
{
LinkList p,q;
if(!h->next)
{
printf("the linklist does not exist");
return -1;
}
p=locate_LinkList(h,i-1);
if(!p)
{
printf("the parameter i is wrong");
return 0;
}
q=p->next;
p->next=q->next;
free(q);
return 1;
}
int main()
{
return 0;
}
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
typedef int DataType;
typedef struct node
{
DataType data[MAXSIZE];
int length;
}SeqList;
typedef SeqList *PSeqList;
//init the SepList
PSeqList init_SeqList()
{
PSeqList s=(PSeqList)malloc(sizeof(SeqList));
if(s)
s->length=0;
return s;
}
void destroy_SeqList(PSeqList s)
{
if(s)
free(s);
s=NULL;
return;
}
int length_SeqList(PSeqList s)
{
if(s)
return s->length;
else
return (-1);
}
int location_SeqList(PSeqList s,DataType d)
{
int i=0;
if(!s)
{
printf("the list doesn't exist'");
return (-1);
}
else
{
while(i<s->length && d!=s->data[i])
i++
if(i>=s->length)
return 0;
else
return i+1;
}
}
int main()
{
return 0;
}
实现基于C/C++的数据结构的单链表,此程序未经过严格实验,只是提供大概思路
#include<stdio.h>
#include<stdlib.h>
typedef int DataType;
typedef struct node
{
DataType data;
struct node *next;
}LNode,*LinkList;
LinkList creat_LinkList()
{
LinkList H;
H=(LinkList)malloc(sizeof(LNode));
if(H)
H->next=NULL;
return H;
}
void destroy_LinkList(LinkList h)
{
LinkList p,q;
if(!h)
return;
p=H;
while(p)
{
q=p;
p=p->next;
free(q);
}
h=NULL;
}
int length_LinkList(LinkList h)
{
LinkList p;
int i=-1;
p=h;
while(p)
{
i++;
p=p->next;
}
return i;
}
LinkList locate_LinkList(LinkList h,DataType x)//use data
{
LinkList p;
p=h->next;
while(p!=NULL && p->data!=x)
p=p->next;
return p;
}
LinkList locate_LinkList(LinkList h,int i)//use position
{
LinkList p;
int j=0;
p=h->next;
while(p && j<i)
{
j++;
p=p->next;
}
if(j!=i || !p)
{
printf("the parameter i is wrong or the linklist does not exist")
return (-1);
}
return p;
}
int insert_LinkList(LinkList h,int i,DataType x)
{
LinkList p,q;
p=locate_LinkList(h,i-1);
if(!p)
{
printf("i is wrong")
return -1;
}
q=(LinkList)malloc(sizeof(LNode));
if(q=NULL)
{
printf(" memory allcation failure")
return 0;
}
q->data=data;
q->next=p->next;
p->next=q;
return 1;
}
int delete_LinkList(LinkList h,int i)
{
LinkList p,q;
if(!h->next)
{
printf("the linklist does not exist");
return -1;
}
p=locate_LinkList(h,i-1);
if(!p)
{
printf("the parameter i is wrong");
return 0;
}
q=p->next;
p->next=q->next;
free(q);
return 1;
}
int main()
{
return 0;
}
相关文章推荐
- C++--顺序表与单链表实现
- C++实现顺序表和单链表
- c++实现单链表,双向链表,顺序表的接口(非模板)
- [C++]实现顺序表和单链表
- C++学习总结——顺序存储,链式存储,索引存储,哈希存储的优缺点,以及vector数组,list链表,十字链表,索引结构,hash表的实现
- C++实现顺序表->单链表->双向链表
- C++实现顺序表和单链表
- C++实现顺序表和单链表
- c++ 顺序存储和链表存储 栈的实现代码
- C++实现顺序表、单链表、双链表
- 【C++】实现顺序表、单链表和双向链表
- C++实现顺序表及双向链表
- 顺序链表用C++实现
- C++ 单链表基本操作分析与实现 链表 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结
- c++实现顺序表、单链表和双向链表
- C++简单实现顺序表与单链表
- 双向循环链表的头插、中插、尾插、删除、逆序顺序显示(C++实现)
- C++实现顺序表和单链表
- 链表的顺序表示和实现(C++模板类实现)
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)