谁能给我一个简单的,用C++写的类的链表,并实现简单的添加、查找和删除的功能、
展开全部
#include<stdio.h>
#include <stdlib.h>
#include<iostream.h>
struct llist {
int num;
struct llist *next;
};
typedef struct llist node;
typedef node *llink;
typedef int Status;
typedef int ElemType;
/////////////////////////
#define OK 0
#define ERROR -1
////////////////////
void printfllist(llink ptr) {
while(ptr != NULL) {
printf("%d ",ptr->num);
ptr = ptr->next;
}
printf("\n");
}
llink createllist(int *array,int len) {
llink head;
llink ptr,ptr1;
int i;
head = (llink)malloc(sizeof(node));
if(!head) return NULL;
head->num = array[0];
head->next = NULL;
ptr = head;
for(i = 1;i < len;i++) {
ptr1 = (llink)malloc(sizeof(node));
if(!ptr1) return NULL;
ptr1->num= array[i];
ptr->next = ptr1;
ptr = ptr1;
}
ptr->next = NULL;
return head;
}
void FreeList(llink head) {
llink p,q;
p = head;
q = p->next;
while(q != NULL) {
p = q;
q = p->next;
free(p);
}
free(head);
}
///////////////////////////////////////
/////////////////////////////////////////////////
int Insert_LinkList(llink L,int n ,int x)
{
llink p= (llink)malloc(sizeof(node));
p=L;
int j=0;
while(p&&j<n-1)
{
p=p->next;
++j;
}
if(!p||j>n-1)
return ERROR;
llink s=(llink)malloc(sizeof(node));
s->num=x;
s->next=p->next;
p->next=s;
return OK;
free(p);
free(s);
}//////////
Status GetElem(llink L,int i,ElemType &e)
{
llink p= (llink)malloc(sizeof(node));
p=L;
int j=1;
while(p&&j<i)
{
p=p->next;
++j;
}
if(!p||j>i)
return ERROR;
e=p->num;
return e;
free(p);
}
////////////////////////////////////
Status ListDelete_L(llink &L,int i,ElemType &e)
{
llink p= (llink)malloc(sizeof(node));
llink q= (llink)malloc(sizeof(node));
p=L;
int j=0;
while(p->next&&j<i-1)
{
p=p->next;
++j;
}
if(!p||j>i-1)
return ERROR;
q=p->next;
p->next=q->next;
e=q->num;
return OK;
}
//////////////////////////////////////////////
void main() {
int llist1[6] = {1,2,3,4,5,6};
int llist2[5] = {8,19,45,76,35};
llink ptr1,ptr2;
ptr1 = createllist(llist1,6);
if(ptr1 == NULL) {
printf("failed!\n");
exit(1);
}
ptr2 = createllist(llist2,5);
if(ptr2==NULL)
{
printf("failed\n");
exit(1);
}
Insert_LinkList(ptr1,3,34);///在地三个位置后插入34;
printfllist(ptr1);
printfllist(ptr2);
int e1,e2;
GetElem(ptr1,5,e1);
cout<<"提取的元素为:"<<e1<<endl;
ListDelete_L(ptr1,2,e2);
cout<<"删除的元素为:"<<e2<<endl;
printfllist(ptr1);
FreeList(ptr1);
FreeList(ptr2);
}
#include <stdlib.h>
#include<iostream.h>
struct llist {
int num;
struct llist *next;
};
typedef struct llist node;
typedef node *llink;
typedef int Status;
typedef int ElemType;
/////////////////////////
#define OK 0
#define ERROR -1
////////////////////
void printfllist(llink ptr) {
while(ptr != NULL) {
printf("%d ",ptr->num);
ptr = ptr->next;
}
printf("\n");
}
llink createllist(int *array,int len) {
llink head;
llink ptr,ptr1;
int i;
head = (llink)malloc(sizeof(node));
if(!head) return NULL;
head->num = array[0];
head->next = NULL;
ptr = head;
for(i = 1;i < len;i++) {
ptr1 = (llink)malloc(sizeof(node));
if(!ptr1) return NULL;
ptr1->num= array[i];
ptr->next = ptr1;
ptr = ptr1;
}
ptr->next = NULL;
return head;
}
void FreeList(llink head) {
llink p,q;
p = head;
q = p->next;
while(q != NULL) {
p = q;
q = p->next;
free(p);
}
free(head);
}
///////////////////////////////////////
/////////////////////////////////////////////////
int Insert_LinkList(llink L,int n ,int x)
{
llink p= (llink)malloc(sizeof(node));
p=L;
int j=0;
while(p&&j<n-1)
{
p=p->next;
++j;
}
if(!p||j>n-1)
return ERROR;
llink s=(llink)malloc(sizeof(node));
s->num=x;
s->next=p->next;
p->next=s;
return OK;
free(p);
free(s);
}//////////
Status GetElem(llink L,int i,ElemType &e)
{
llink p= (llink)malloc(sizeof(node));
p=L;
int j=1;
while(p&&j<i)
{
p=p->next;
++j;
}
if(!p||j>i)
return ERROR;
e=p->num;
return e;
free(p);
}
////////////////////////////////////
Status ListDelete_L(llink &L,int i,ElemType &e)
{
llink p= (llink)malloc(sizeof(node));
llink q= (llink)malloc(sizeof(node));
p=L;
int j=0;
while(p->next&&j<i-1)
{
p=p->next;
++j;
}
if(!p||j>i-1)
return ERROR;
q=p->next;
p->next=q->next;
e=q->num;
return OK;
}
//////////////////////////////////////////////
void main() {
int llist1[6] = {1,2,3,4,5,6};
int llist2[5] = {8,19,45,76,35};
llink ptr1,ptr2;
ptr1 = createllist(llist1,6);
if(ptr1 == NULL) {
printf("failed!\n");
exit(1);
}
ptr2 = createllist(llist2,5);
if(ptr2==NULL)
{
printf("failed\n");
exit(1);
}
Insert_LinkList(ptr1,3,34);///在地三个位置后插入34;
printfllist(ptr1);
printfllist(ptr2);
int e1,e2;
GetElem(ptr1,5,e1);
cout<<"提取的元素为:"<<e1<<endl;
ListDelete_L(ptr1,2,e2);
cout<<"删除的元素为:"<<e2<<endl;
printfllist(ptr1);
FreeList(ptr1);
FreeList(ptr2);
}
追问
我是要C++啊、
追答
#include
#include
#include
//////////////////////////
typedef class llist node;
typedef node *llink;
typedef int Status;
typedef int ElemType;
/////////////////////////
#define OK 0
#define ERROR -1
////////////////////
class llist {
public:
int num;
class llist *next;
void printfllist(llink ptr);
llink createllist(int *array,int len);
void FreeList(llink head);
int Insert_LinkList(llink L,int n ,int x);
Status GetElem(llink L,int i,ElemType &e);
Status ListDelete_L(llink &L,int i,ElemType &e);
};
void llist::printfllist(llink ptr) {
while(ptr != NULL) {
printf("%d ",ptr->num);
ptr = ptr->next;
}
printf("\n");
}
llink llist::createllist(int *array,int len) {
llink head;
llink ptr,ptr1;
int i;
head = (llink)malloc(sizeof(node));
if(!head) return NULL;
head->num = array[0];
head->next = NULL;
ptr = head;
for(i = 1;i num= array[i];
ptr->next = ptr1;
ptr = ptr1;
}
ptr->next = NULL;
return head;
}
void llist::FreeList(llink head) {
llink p,q;
p = head;
q = p->next;
while(q != NULL) {
p = q;
q = p->next;
free(p);
}
free(head);
}
int llist::Insert_LinkList(llink L,int n ,int x)
{
llink p= (llink)malloc(sizeof(node));
p=L;
int j=0;
while(p&&jnext;
++j;
}
if(!p||j>n-1)
return ERROR;
llink s=(llink)malloc(sizeof(node));
s->num=x;
s->next=p->next;
p->next=s;
return OK;
free(p);
free(s);
}//////////
Status llist::GetElem(llink L,int i,ElemType &e)
{
llink p= (llink)malloc(sizeof(node));
p=L;
int j=1;
while(p&&jnext;
++j;
}
if(!p||j>i)
return ERROR;
e=p->num;
return e;
free(p);
}
空间有限?你的邮箱?
我给发全的的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询