当前位置:首页 > 代码 > 正文

顺序表的建立插入删除查找的代码(顺序表的删除怎么实现的)

admin 发布:2022-12-19 18:10 144


本篇文章给大家谈谈顺序表的建立插入删除查找的代码,以及顺序表的删除怎么实现的对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

用c++语言建立顺序表,完成顺序表的基本操作:初始化、插入、删除、输出、查找数据元素。

#include iostream

#include stdio.h

#include string.h

#include ctype.h

using namespace std;

struct data{ int data1;

struct data *next;

};

struct data *CreatList(struct data *List,int count)

{ struct data *head,*p,*q;

for(int i=0;icount;i++)

{

q=(struct data*)malloc(sizeof(struct data));

cout"输入第"i+1"个数据:"endl;

cinq-data1;

if(i==0)p=head=q;

else p-next=q;

q-next=0;

p=q;

}

return head;

}

void main()

{ int n;

cout"输入要添加的数据个数:"" ";

cinn;

coutendl;

struct data *List,*List_head,*in;

List=(struct data*)malloc(sizeof(struct data));

List_head=(struct data*)malloc(sizeof(struct data));

in=(struct data*)malloc(sizeof(struct data));

List=CreatList(List,n);

List_head=List;

cout"你输入的数据为: ";

for(int i=0;in;i++)

{

cout" "List-data1" ";

List=List-next;

}

List=List_head;

int in1,in2;

char x;

coutendl;

do

{

cout"\n请输入要插入在的位置,首位置为1,尾位置为"n+1":"endl;

cinin1;

}while(in11||in1n+1);

cout"请输入要插入的数字:"endl;

cinin2;

if(in1==1){in-next=List;in-data1=in2;List_head=in;}

else

{

in-data1=in2;

for(int i=1;iin1-1;i++)

{ List=List-next;

}

in-next=List-next;

List-next=in;

}

List=List_head;

cout"插入后的数据: ";

for(int i=0;in+1;i++)

{

cout" "List-data1" ";

List=List-next;

}

List=List_head;

int de_n;

struct data *p,*q;

do{

coutendl"现在输入你要删除的元素位置(起始位置为1,结尾为"n+1" ";

cinde_n;}while(de_n1||de_nn+1);

if(de_n==1){List_head=List-next;free(List);}

else

{

for(int i=1;ide_n-1;i++)

{

List=List-next;

}

p=List;

List=List-next;

q=List;

p-next=q-next;

free(q);

}

List=List_head;

cout"删除后的数据为: "endl;

for(int i=0;in;i++)

{

coutList-data1" ";

List=List-next;

}

int find;

char z;

coutendl"请输入你要查找的元素:"" ";

restart:

List=List_head;

cinfind;

for(int i=0;in;i++)

{

if(List-data1==find){coutendl"该元素所在的位置为第("i+1")个"endl;}

if(i==n-1)

{coutendl"重新查找请输入y: ";

cinz;

if(z=='Y'||z=='y')goto restart;else exit(0);}

List=List-next;

}

system("pause");

}

建立顺序表。 在顺序表上实现插入、删除和查找操作

/*

线性表的运用

(1)创建顺序表

(2)获取第i个元素

(3)查找元素x

(4)在某一位置插入数据

(5)删除某一位置数据

在主函数中调用上述操作。

*/

#include stdio.h

#includestdlib.h

#define maxsize 50

typedef struct

{

int data[maxsize];

int last;

}Sequenlist;

Sequenlist * InitList () //创建顺序表

{

Sequenlist * L ;

L= (Sequenlist *) malloc( sizeof(Sequenlist) );

L-last =0;

return(L);

}

Sequenlist * creat() //创建一个有具体内容的顺序表

{

Sequenlist * L; int i=1,n;

L=InitList( );

printf("请插入数据,以0结束\n");

scanf("%d",n);

while(n!=0 L-lastmaxsize)

{

L-data[i]=n;

i=i++;

L-last++;

scanf("%d",n);

}

return(L);

}

int Length (Sequenlist * L) //求表的长度

{

return (L-last);

}

int GetData (Sequenlist * L, int i ) //获取第i个元素

{

if ( i =1 i =L-last)

return (L-data[i]);

else

{

printf ("参数 i 不合理!\n");

return 0;

}

}

int Find (Sequenlist *L, int x ) // 查找元素x

{

int i=1;

while ( i =L-last L-data[i] != x )

i++;

if ( i =L-last )

return (i);

else

return (0);

}

int Insert ( Sequenlist * L, int x, int i ) //在某一位置插入数据

{

int j;

//在表中第 i 个位置插入新元素 x

if (i 1|| i L-last +1|| L-last == maxsize)

return 0; //插入不成功

else {

for ( j=L-last; j =i; j-- )

{ L-data[j+1] = L-data[j]; }

L-data[i] = x; L-last++;

return 1; //插入成功

}

}

int Delete ( Sequenlist *L, int i ) //删除某一位置的数据

{

//在表中删除节点i

int j;

if ( i 1 || i L-last) return 0;

for ( j=i+1; j =L-last; j++ )

L-data[j-1] =L-data[j];

L-last=L-last -1;

return 1; //成功删除

}

void print(Sequenlist *L) //打印函数

{

int i;

for(i=1;i=L-last;i++)

printf("%d\n",L-data[i]);

}

void main()

{

int length,i;

int value,number,location;

int j,k;

int flag;

Sequenlist * L ;

L=creat();

length=Length(L);

printf("The length is %d\n",length);

printf("Please input the location\n");

scanf("%d",location);

value=GetData(L,location);

printf("The number is %d\n",value);

printf("Which number do you want to find?\n"); //查找功能

scanf("%d",i);

value=Find(L,i+1);

if(value!=0)

printf("The location is %d\n",value);

else

printf("There is no such number!\n");

printf("Which place do you want to insert?\n"); //插入功能

scanf("%d",j);

printf("Please input the number\n");

scanf("%d",number);

flag=Insert(L,number,j);

if(flag==0)

printf("Failing to insert!\n");

else

{ printf("Done!\n");

print(L);

}

printf("Which place do you want to delete?\n"); //删除功能

scanf("%d",k);

flag=Delete(L,k);

if(flag==0)

printf("Failing to delete!\n");

else

{ printf("Done!\n");

print(L);

}

}

数据结构 c语言版 ——顺序表的查找、插入与删除

#includestdio.h

#includestdlib.h

#define N 10 //顺序表的最大容量

int length=0; //顺序表的当前元素个数

#define TRUE 1

#define FALSE 0

#define OK 1

#define ERROR 0

#define INFEASIBLE -1

#define OVERFLOW -2

#define LIST_INIT_SIZE 100//线性表存储的空间初始化分配量

#define LISTINCREAMENT 10 //线性表存储空间的分配增量

typedef struct LNode//线性单链表存储结构

{

int data;

struct LNode *next;

}LNode,*LinkList;

int CreatList_L(LinkListL)//创建一个线性链表

{

L=(LinkList)malloc(sizeof(LNode));//分配一个空间给链表,作为头结点

if(!L) exit(OVERFLOW);

L-next=NULL;

return OK;

}

int DestroyList_L(LinkList L)//销毁链表

{

if(L) free(L);

return OK;

}

int ListInsert_L(LinkListL,int i,int e)//再练表的第i个元素前插入一个元素e

{

LinkList p=L;//p指针定位于i-1

LNode *s;

int j=0;

while(pji-1) {p=p-next;j++;}//定位

if(!p||ji-1) return ERROR;//如果i1或大于链表元素个数+1

s=(LNode*)malloc(sizeof(LNode));

if(!s) exit(OVERFLOW);

s-data=e; //完成插入操作

s-next=p-next;

p-next=s;

return OK;

}

int ListDelet_L(LinkListL,int i,inte)//删除链表L中的第i个元素,并返回给e;

{

LinkList p=L;

LNode* q;

int j=0;

while(!pji-1) {p=p-next;j++;}//p指针定位于i-1;

if(!p-next||ji-1) return ERROR;

e=p-next-data; //完成删除操作

q=p-next;

p-next=p-next-next;

free(q);

return OK;

}

int ListTraverse_L(LinkList L,int n)//链表的遍历

{

int i=0;

if(!L)return ERROR;

L=L-next;

while(L)

{

if(L-data==n)return i;

L=L-next;

i++;

}

return FALSE;

}

int InverseSingleList_L(LinkList L)

{

if(!L-next||!L-next-next)//如果链表少于2个Node那么链表不需要改变顺序

return OK;

LNode *p,*q;

p=L-next; //第一次因为p是最后一个连接所以把p-next设为空

q=p-next;

p-next=NULL;

p=q;

while(p)

{

q=p-next; //用q去保留p后面一个Node;

p-next=L-next;

L-next=p;

p=q;

}

return OK;

}

int main()

{

int List[N];

LinkList L;

int ch,exit='N';

do

{

system("CLS");

printf("\t\t********************************************\n");

printf("\t\t* 1.创建一个顺序表 .........(1) *\n");

printf("\t\t* 2.在顺序表中查找元表.........(2) *\n");

printf("\t\t* 3.在顺序表中插入元表.........(3) *\n");

printf("\t\t* 4.在顺序表中删除元表.........(4) *\n");

printf("\t\t* 5.退出 .........(5) *\n");

printf("\t\t********************************************\n");

printf("\n请选择操作代码:");

ch=getchar();

switch(ch)

{

case '1':

printf("\n请输入十个元素");

CreatList_L(L);

for(length=0;lengthN;length++)

{

scanf("%d",List[length]);

getchar();

ListInsert_L(L,length+1,List[length]);

}

printf("\n创建成功!");

getchar();

break;

case '2':

scanf("%d",List[0]);

if(ListTraverse_L(L,List[0]))printf("该元素存在该年表的第%d个位置",ListTraverse_L(L,List[0]));

else printf("不存在该元素");

getchar();

break;

case '3':

scanf("%d%d",length,List[0]);

ListInsert_L(L,length,List[0]);

system("pause");

break;

case '4':

scanf("%d",length);

ListDelet_L(L,length,List[0]);

system("pause");

break;

case '5':

printf("\n您是否真的要退出程序(Y/N):");

getchar();

exit=getchar();

break;

default:

getchar();

printf("\n无效输入,请重新选择...:");

getchar();

break;

}

}while(exit!='y'exit!='Y');

}

用c语言创建一个顺序表,并完成创建,显示,查找,插入,删除,退出等任务

#includestdio.h

int n=0; //全局变量数组中元素个数

/***************************函数说明************************/

void insert(int * ss);

void show(int *ss);

void delete(int * ss);

void updata(int * ss);

/***************************主 函 数**************************/

main()

{

int bb[20]={0},j;

do

{

printf(" ╔-----------------------------------------------╗\n"); //显示一个简易菜单

printf(" ┆ 1 --- 插入(Insert) ┆\n");

printf(" ┆ 2 --- 修改(Update) ┆\n");

printf(" ┆ 3 --- 删除(Delete) ┆\n");

printf(" ┆ 4 --- 显示( Show ) ┆\n");

printf(" ┆ 5 --- 退出( Exit ) ┆\n");

printf(" ╚-----------------------------------------------╝\n");

printf("请输入所要进行的操作序号: ");

scanf("%d",j); //接受用户的选择

switch(j) //接受用户的函数

{case 1:insert(bb);

break;

case 2:updata(bb);

break;

case 3:delete(bb);

break;

case 4:show(bb);

break;

case 5:break;

default:printf("错误选择!请重选\n");break;

}

}while(j!=5); //直到i被赋值为5

return 0;

}

/**********************************插入函数**************************************/

void insert(int * ss)

{

int i,e,k=n; // i为要插入的位置 e为要插入的值

do{

printf("请输入要插入的位置: ");

scanf("%d",i);

//插入的位置为从 1-----n+1 超出则提示输入有误

if((i(k+1))||i==0) printf("输入有误!! \n");

}while((i(k+1))||i==0);//直到输入的i值为 1---k+1

do{

ss[k+1]=ss[k]; //ss[i]后面的元素向后移动

}while((k--)!=(i-1));

printf("请输入要插入的值: ");

scanf("%d",e);

ss[i-1]=e;

n++;

}

/**********************************显示函数**************************************/

void show(int *ss)

{

int i=0;

for(i;in;i++)

{

printf(" %d -",ss[i]);

} //printf("\b");

printf("\n");

}

/**********************************删除函数**************************************/

void delete(int * ss)

{

int i,t;

do{

printf("请输入要删除的位置: ");

scanf("%d",i);

if(in) printf("输入有误!! 请重新输入: ");

}while(in);

t=i-1;

do{

ss[t]=ss[t+1];

}while((t++)!=n);

n--;

}

/**********************************修改函数**************************************/

void updata(int * ss)

{

int i,e;

do{

printf("请输入要修改的位置: ");

scanf("%d",i);

if(in) printf("输入有误!! 请重新输入: ");

}while(in);

printf("请输入要修改后的值: ");

scanf("%d",e);

ss[i-1]=e;

}

关于顺序表的建立插入删除查找的代码和顺序表的删除怎么实现的的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/16845.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载