线性表先插入再删除的算法 C语言

发布网友 发布时间:2024-10-24 07:52

我来回答

2个回答

热心网友 时间:2024-10-31 14:34

//数序表存储
#include<iostream>
#include"stdio.h"
#include"malloc.h"
using namespace std;
#define maxsize 1024
typedef struct sequenlist
{
char data[maxsize];
int last;
}sequenlist;
int insert(sequenlist *L,char x,int i)
{
int j;
if(L->last==maxsize-1)
{
cout<<"overflow"<<endl;
return 0;
}
else if((i<0)||(i>L->last))
{
cout<<"error,please input the right 'i'"<<endl;
return 0;
}
else
{
for(j=L->last;j>=i;j--)
L->data[j+1]=L->data[j];
L->data[i]=x;
L->last=L->last+1;
}
return(1);
}
int dellist(sequenlist *L,int i)
{
if((i<0)||(i>L->last))
{
cout<<"error,please input the right 'i'"<<endl;
return 0;
}
else
{
for(;i<L->last;i++)
L->data[i]=L->data[i+1];
L->last=L->last-1;
return(1);
}
}
void creatlist(sequenlist *L)
{
int n,i;
char tmp;
cout<<"请输入数据个数"<<endl;
cin>>n;
for(i=0;i<n;i++)
{
cout<<"data["<<i<<"]"<<endl;
cin>>&tmp;
L->data[i]=tmp;
}
L->last=n-1;
cout<<endl;
}
void printout(sequenlist *L)
{
int i;
for(i=0;i<=L->last;i++)
{
cout<<"data["<<i<<"]"<<endl;
cout<<L->data[i]<<endl;
}
}
int main()
{
sequenlist *L;
char cmd,x;
int c;
L=new sequenlist;
creatlist(L);
printout(L);
do
{
cout<<"i,I...........插入"<<endl;
cout<<"d,D...........删除"<<endl;
cout<<"q,Q...........退出"<<endl;
do
{
fflush(stdin);
cin>>&cmd;
}
while((cmd!='d')&&(cmd!='D')&&(cmd!='q')&&(cmd!='Q')&&(cmd!='i')&&(cmd!='I'));
switch(cmd)
{
case 'i':
case 'I':
cout<<"请输入你要插入的数据"<<endl;
fflush(stdin);
cin>>&x;
cout<<"请输入你要插入的位置"<<endl;
cin>>c;
insert(L,x,c);
printout(L);
break;
case 'd':
case 'D':
cout<<"请输入你要删除的数据"<<endl;
fflush(stdin);
cin>>c;
dellist(L,c);
printout(L);
break;
}
}while((cmd!='q')&&(cmd!='Q'));
return 0;
}

热心网友 时间:2024-10-31 14:34

顺序存储
int ListInsert_Sq(Sqlist &L,int i,int x)
{
int j ;
if(i<0||i>L.length)
return 0;
else
{
L.length++;
for(j=L.length-1;j>i;j--)
L.data[j]=L.data[j-1];
L.data[j]=x;
return 1;
}
}

int DelNode(Sqlist &L,int i)
{
int j;
if(i<0 || i>L.length-1)
return 0;
else
{
for(j=i;j<L.length-1;j++)
L.data[j]=L.data[j+1];
L.length--;
return 1;
}
}
链式存储
int ListInsert(LinkList L,int i ,int e)
{//插入元素
LinkList p=L,s;
int j=0;
while(p&&j<i-1)
{
p=p->next;
++j;
}
if(!p||j>i-1) return ERROR;
s=(LinkList)malloc(sizeof(LNode));
s->data=e;
s->next=p->next;
p->next=s;
return OK;
}
int ListDelet(LinkList L, int i)
{//删除指定位置的结点
LinkList p=L,q;
int j=0;
while(p->next&&j<i-1) //寻找第i-1个结点
{
p=p->next;
++j;
}
if(!(p->next)||j>i-1) return ERROR;
q=p->next; p->next=q->next;
free(q);
return OK;
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com