• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

刘泽南

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

数据结构

1区间删除数据

void CreateList(SqList &L,int n)
{
int i;//定义i整数变量
L=new List;//创建链表L
for(i=0;i<n;i++)
{
cin>>L->data[i];//链表空间
}
L->length=n;//链表长度为n
return;
}
void DelNode(SqList &L,int min,int max)
{
int i=0, j, k, d;
while(i<L->length && L->data[i]<min) i++;//选取所选区间
j=i;
while (j<L->length && L->data[j]<=max) j++;
d=j-i;
if ( d==0) return;
for (k=j; k<L->length; k++) L->data[k-d]=L->data[k];
L->length=L->length-d;
}
void DispList(SqList L)
{
int i;
if(L->length==0)
cout<<"线性表为空!";
else
{
for(i=0;i<L->length;i++)
{
cout<<L->data[i];
if(i!=L->length-1)
cout<<" ";//删除数据
}
}
}

2.顺序表删除重复数据

void CreateSqList(List &L,int a[],int n)
{
L=new SqList;//创建链表L
int i;
for(i=0;i<n;i++)
{
L->data[i]=a[i];
}
L->length=n;
}
void DelSameNode(List &L)
{
if(L->length==0)
return ;
int a[L->length];//定义一个新的数组用于储存删除后的数字
int i=0,j,k,flag;//i,j,k用于循环,flag用于判断数字是否重复
for(j=L->length-1;j>0;j--)//把删除后的数字赋值到数组a中
{
flag=0;
for(k=j-1;k>=0;k--)
{
if(L->data[j]==L->data[k])
flag=1;
}
if(flag==0)
{
a[i]=L->data[j];
i++;
}
}
j=0;
a[i]=L->data[0];
L->length=i+1;//更新长度
while(i>=0)//反向输入数组,保证L->data中的数据顺序正确
{
L->data[j++]=a[i--];
}
}
void DispSqList(List L)
{
int i;
if(L->length==0)
{
return;
}
for(i=0;i<L->length;i++)
{
cout<<L->data[i];
if(i!=L->length-1)
cout<<" ";删除该数据
}
}

 

3.有序表插入数据

void CreateSqList(SqList &L,int n)
{
L=new List;
if(!L) exit(0);
L->length=n;
int i;
for(i=0;i<n;i++)
{
cin>>L->data[i];
}
}
void InsertSq(SqList &L,int x)
{
int i=0,j=L->length,k;
while(L->data[i]<x&&i<L->length)//查找该数据位置
{
i++;
}
k=i;
while(i<=L->length)
{
L->data[j]=L->data[j-1];//不懂
i++;
j--;
}
L->data[k]=x;
L->length++;
}
void DispSqList(SqList L)
{
int i;
if(L->length==0)
{
cout<<"error";
return;

}
for(i=0;i<L->length;i++)
{
cout<<L->data[i];
if(i!=L->length-1)
cout<<" ";
}
}

4.头插法建链表


void CreateListF(LinkList &L,int n){
L=new LNode;
L->next=NULL;
int i;
for(i=0;i<n;i++){
LNode *p = new LNode;//指针指向的位置
p->next=L->next;
L->next=p;
cin>>p->data;
}
}
void DispList(LinkList L){
int i;
LNode *p = new LNode;//指针位置
p = L->next;
if(p!=NULL){
while(p!=NULL){
if(p->next!=NULL)
cout<<p->data<<" ";//不懂
else
cout<<p->data;
p=p->next;
}
}
else{
cout<<"空链表!";
}
}

5.单链表逆置

void ReverseList(LinkList &L)
{
LinkList head,h,l,s;
head=new LNode;
head->next=NULL;//不懂
h=head;
l=L->next;//改变位置

while(l!=NULL)
{
s=l->next;
l->next=h->next;
h->next=l;
l=s;
}
L=head;
}

posted on 2019-03-25 21:28  刘泽南  阅读(125)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3