-
单链表---C++描述 - [C++]
2008-05-31
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://powers7.blogbus.com/logs/21994515.html
#include <iostream>
using namespace std;
#define ElemType int
#define flag -1
typedef struct Node
{
ElemType data;
struct Node *next;
}LNode, *LinkedList;
LinkedList LinkedListInit();
int LinkedListLength(LinkedList &L);
LinkedList LinkedListGet(LinkedList L,LinkedList p,int i);
LinkedList LinkedListLocate(LinkedList L,ElemType x);
void LinkedListInsert(LinkedList &L,LinkedList p,ElemType x);
void LinkedListDel(LinkedList &L,int i);
LinkedList LinkedListCreat();
LinkedList LinkedListShow(LinkedList L);
LinkedList L=NULL,p=NULL,w;
ElemType x=0;
int main()
{
int i;
cout <<"链表的初始化" <<endl;
LinkedListInit();
cout <<endl;
cout <<"链表的创建"<<" ";
LinkedListCreat();
cout <<endl;
LinkedListShow(L);
cout<<endl;
cout<<endl;
cout <<"链表的长度" <<":";
cout <<LinkedListLength(L) <<endl<<endl;
cout <<"取链表的元素" <<":";
cout <<endl<<"取出的元素为:"<<(LinkedListGet(L,p,i))->data<<endl<<endl;
cout <<"链表的插入" <<":";
LinkedListInsert(L,p,x);
cout <<endl<<endl;
LinkedListShow(L);
cout <<endl<<endl;
cout <<"链表的删除" <<":";
LinkedListDel(L,i);
cout <<endl;
LinkedListShow(L);
cout <<endl<<endl;
system("pause");
return 0;
}
/***************建立一个空链表*********************/
LinkedList LinkedListInit()
{
L=(LNode *)malloc(sizeof(LNode));
if(L==NULL)
{
cout <<"没有足够的内存空间" <<endl;
}
L->next=NULL;
return L;
}
/************** 求表长****************************/
int LinkedListLength(LinkedList &L)
{
p=L->next;
int j=0;
while(p)
{
j++;
p=p->next;
}
return j;
}
/*************按序号查找************************/
LinkedList LinkedListGet(LinkedList L,LinkedList p,int i)
{
cin>>i;
p=L->next;
int j=1;
while(p!=NULL&&j <i)
{
p=p->next;
j++;
}
if(j=i)
{
return p;
}
else
{
return NULL;
}
}
/**********************按值查找*********************/
LinkedList LinkedListLocate(LinkedList L,ElemType x)
{
p=L->next;
int j=1;
while(p!=NULL&&p->data!=x)
{
p=p->next;
j++;
}
if(p->data==x)
{
return p;
}
else
{
return NULL;
}
}
/********************插入***************************/
void LinkedListInsert(LinkedList &L,LinkedList p,ElemType x)
{
LNode *pre,*s;
pre=L;
cout<<"input your number"<<":";
cin>>x;
while(pre!=NULL&&pre->next!=p)
pre=pre->next;
if(!pre)
{
cout <<"不存在p这样的结点" <<endl;
}
else
{
s=(LNode *)malloc(sizeof(LNode));
s->data=x;
s->next=pre->next;
pre->next=s;
}
}
/********************删除***********************/
void LinkedListDel(LinkedList &L,int i)
{
cout<<"input your number_id"<<":";
cin>>i;
LinkedList q;
int j=1;
p=L;
while(p->next&&j <i)
{
p=p->next;
j++;
}
if(p->next==NULL)
{
cout <<"删除的位置不正确" <<endl;
}
q=p->next;
p->next=q->next;
free(q);
}
/*****************建立单链表**********************/
LinkedList LinkedListCreat()
{
LinkedList r;
L=(LNode *)malloc(sizeof(LNode));
L->next=NULL;
r=L;
cout <<"输入元素" <<":"<<" ";
cin>>x;
while(x!=flag)
{
p=(LNode *)malloc(sizeof(LNode));
p->data=x;
r->next=p;
r=p;
cin>>x;
}
r->next=NULL;
return L;
}
/*****输出链表中的值***********/
LinkedList LinkedListShow(LinkedList L)
{
p=L->next;
while(p!=NULL)
{
cout <<p->data<<" ";
p=p->next;
}
return L;
}随机文章:
上香:今天是观音菩萨的生日 2009-11-05数据库的设计范式 2008-06-27数据库范式 2008-06-27顺序表---C++描述 2008-05-25二叉树---C++描述 2008-05-24
收藏到:Del.icio.us








评论