简单链表的操作

/*************
* 作者:张毅 *
* 时间:08-3-19
*************/

#include<iostream>
using std::cout;
using std::cin;
using std::endl;
/*************
*定义一个结点*
*************/
typedef struct Lnode
{
 int data;
 Lnode *next;
}*LinkList;
/*************
*创建一个结点*
*************/

int InitList(LinkList &L)
{
L=(LinkList)malloc(sizeof(Lnode));
L->next=NULL;
return 1;
}

/*************
*输入链表元素*
*************/

int PutinList(LinkList &L)
{
InitList(L);
LinkList p=NULL;
LinkList q=NULL;
int i;
cout<<"how many nodes are you want to put in?"<<endl;
cin>>i;
cout<<"now please input you node numbers"<<endl;
q=L;
for(int j=1;j<=i;j++)
 {
 InitList(p);
 q->next=p;
 cin>>(p->data);
 q=p;
 }
p->next=NULL;
return 1;
}

int print(LinkList L)
{
LinkList p=NULL;
if(L->next==NULL)
return 0;
p=L;
do{
 p=p->next;
 cout<<(p->data)<<" ";
   }while(p->next!=NULL);
cout<<endl;
return 1;
 }
/*************
*插入一个结点*
*************/
int InsertList(LinkList &L)
{
int i;
LinkList p=NULL;
LinkList q=NULL;
InitList(q);
cout<<"which number do you want to insert?"<<endl;
cin>>(q->data);
int j;
j=1;
cout<<"which seat do you want to insert you number?"<<endl;
cin>>i;
p=L;
while(i>0&&p->next!=NULL&&j<i)
 {
  p=p->next;
  ++j;
 }
if(i<0||p->next==NULL||j>i)
return 0;
q->next=p->next;
p->next=q;
return 1;
}

/*************
*删除一个结点*
*************/
int DeleteList(LinkList &L)
{
int i;
int e;
i=1;
cout<<"which number do you want to delete?"<<endl;
cin>>e;
LinkList p=NULL;
LinkList q=NULL;
q=L;
p=L->next;
while(q->next!=NULL)
 {
  if(p->data==e)break;
  q=q->next;
  p=p->next;
 }
if(q->next==NULL)
 {
 cout<<"没有元素e"<<endl;
 return 0;
 }
if(p->next==NULL)
 {
  q->next=NULL;
  free(p);
  return 1;
 }
q->next=p->next;
free(p);
return 1;
}

int main()
{
LinkList A;
PutinList(A);
print(A);
InsertList(A);
print(A);
DeleteList(A);
print(A);
return 0;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值