一天没搞定555555(关于链表操作的程序)
这个程序怎么+++限制的条件 我都是用对的数据来试验的 比如在删除里加上如果没有链表 输出请建立链表 等等限制非法数据乱来 谢谢!!#include<iostream.h>
#include"malloc.h"
struct node
{
int data;
struct node *next;
};
struct node *next,*null,*p,*L,*s,*q;
int j,e,n,k,x,y;
void create( )
{
L=(struct node *)malloc(sizeof(struct node));
L->next=null;
s=L;
cout<<"请输入链表的元素(要求是整型,以-1结束输入):"<<endl;
cin>>k;
while(k!=-1)
{
p=(struct node *)malloc(sizeof(struct node));
p->data=k;
s->next=p;
s=p;
cin>>k;
}
p->next=null;
cout<<endl<<endl<<endl;
}
void showlianbiao()
{ if(L=null) cout<<"空链表!"<<endl;
cout<<"您所建立的链表如下:"<<endl;
p=L->next;
while(p)
{
cout<<p->data<<" ";
p=p->next;
}
cout<<endl<<endl;
}
void insert( int i,int e)
{
if(i<0||i>j) cout<<"位置错误!"<<endl;
p=L->next;
cout<<"输入插入的位置i:"<<endl;
cin>>i;
cout<<"输入要插入的元素e:"<<endl;
cin>>e;
if(i<0||i>j) cout<<"位置错误!"<<endl;
else
{
p=L->next;
for(n=0;i<n;n++)
p=p->next;
q=(struct node *)malloc(sizeof(struct node));
q->data=e;
q->next=p->next;
p->next=q;
}
}
void find( int x)
{ if(L=null) cout<<"请建立链表!"<<endl;
int i;
cout<<"请输入要查找的位置x:"<<endl;
cin>>x;
p=L->next;
for(i=1;i<x;i++)
p=p->next;
cout<<p->data<<endl;
}
void del(int y)
{
int i;
cout<<"请输入要删除的位置y:"<<endl;
cin>>y;
p=L->next;
for(i=1;i+1<y;i++)
p=p->next;
q=p->next->next;
free(p->next);
p->next=q;
}
void Length()
{
j=1;
p=L->next;
while(p->next!=null)
{
j++;
p=p->next;
}
cout<<"链表长:"<<j<<endl;
}
int main()
{
int i;
cout<<"1--建立链表:"<<endl;
cout<<"2--显示链表:"<<endl;
cout<<"3--插入元素:"<<endl;
cout<<"4--查找元素:"<<endl;
cout<<"5--删除元素:"<<endl;
cout<<"6--链表长度:"<<endl;
cout<<"请选择:"<<endl;
cin>>i;
switch(i){
case 1: create(); main();break;
case 2: showlianbiao();main();break;
case 3: insert(i,e);main();break;
case 4: find(x);main();break;
case 5: del(y);main();break;
case 6: Length();main();break;
}
return 0;
}
[ 本帖最后由 lwp001 于 2009-10-12 22:24 编辑 ]