單鏈表相關算法

#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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章