您的位置:首页 > 编程语言 > C语言/C++

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息