线性表的动态链式构建

这一篇有一点点的难度,但不用担心,读者耐心看注释,相信能够很快的体会到构建链表的过程,这里我就不在赘述理论了,直接给出代码:

node *p,*u; 
p = head; 
int j = 0;
while(j!=i-1&& p != NULL ){
p=p-> next;//数结点
j ++;
}             
if ( i < 1 || i > count )  
// if ( p == NULL ||p->next==NULL )
return rangeerror;//数到p时为空,没有取到,说明结点根本就不在
u=p->next;    
p->next=u->next;
delete u;    
count --;    
return success;
}
//头插法建表
void  link_list::write1(){
elementtype x; 
node *s;
cout<<"请输入要存入的数据个数(提示:使用头插法构建链表,意味着数据逆序): ";
int a;
cin >>a;
for(int i=1;i<=a;i++){
cout<<"请输入要存的第"<<i<<"个数据: ";
count ++; 
cin >> x;    
s=new node;//定义一个新结点来添加数据     
s->data=x;//将数据填入新结点
s->next=head->next;//新结点是原来头结点指的位子    
head->next=s;//头指针指向新结点

  }                                    
}
//尾插法建表
void  link_list::write2(){
elementtype x; 
node *s,*rear;
rear = head; 
cout<<"请输入要存入的数据个数(提示:使用尾插法构建链表,意味着数据顺序)): ";
int a;
cin >>a;
for(int i=1;i<=a;i++){
cout<<"请输入要存的第"<<i<<"个数据: ";
cin>>x;
count++;
s=new node;//定义一个新结点来添加数据      
s->data=x;//将数据填入新结点
s->next=NULL;//新结点是原来尾指针指的位子    
rear->next=s; //尾指针指向新结点 
rear=s;//尾指针指向新结点的后一位
}
}
//读链表数据,其实就是遍历一遍结点
void link_list::read(){ 
node *p;
p=head->next;//定义p指向第一个结点
cout<<"链表中数据的顺序存储为:"<<endl;
while (p!=NULL){
cout<<p->data<<"   ";//打印出结点输出
p=p->next;//数下一个结点
}
cout<<endl;
}


void main()
{
link_list l1,l2; 
l1.write1();
l1.read();
l2.write2();   
l2.read();
}

读者先实验后体会,相信会有收获。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值