单链表相关算法

#include<iostream>
#include<malloc.h>
using namespace std;


typedef int elemtype;
typedef struct node
{
 elemtype data;
 struct node *next;
}nodetype;


nodetype *create()
{
 cout<<"创建一个单链表:"<<endl;
 nodetype *head,*p,*s;
 p=(nodetype *)malloc(sizeof(nodetype));
 head=p;
 s=p;
 elemtype n;
 while(cin>>n && n!=0)
 {
  p=(nodetype *)malloc(sizeof(nodetype));
  p->data=n;
  s->next=p;
  s=s->next;
 }
 s->next=NULL;
 return head;
}


void dis(nodetype *head)
{
 nodetype *p;
 p=head->next;
 if(p==NULL)
 {
  cout<<"空表"<<endl;
  return;
 }
 while(p!=NULL)
 {
  cout<<p->data<<" ";
  p=p->next;
 }
 cout<<endl;
}


int len(nodetype *head)
{
 nodetype *p=head->next;
 if(p==NULL)
  return 0;
 int j=1;
 while(p!=NULL)
 {
  p=p->next;
  j++;
 }
 return j;
}


nodetype *ins(nodetype *head,int i,elemtype x)
{
 if(i<0|| i>len(head))
 {
  cout<<"I不合格"<<endl;
  return NULL;
 }
 nodetype *p,*s,*t;
 p=(nodetype *)malloc(sizeof(nodetype));
 p->data=x;
 t=head->next;
 s=head;
 int j=1;
 while(j<=i)
 {
  t=s;
  s=s->next;
  j++;
 }
 p->next=s;
 t->next=p;
 return head;

}


nodetype *del(nodetype *head,int i)
{
 if(i<1 || i>len(head))
 {
  cout<<"i不合格"<<endl;
  return NULL;
 }
 int j=1;
 nodetype *p,*s;
 p=head->next;
 s=head;
 while(j<i)
 {
  s=p;
  p=p->next;
 }
 s->next=p->next;
 return head;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值