c/c++实现顺序表和单链表

实现基于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;
}








  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值