实现顺序表的建立,出入,查找,删除等操作

2025-02-27 01:19:27
推荐回答(2个)
回答1:

// dgfderg.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include"stdio.h"
#include"stdlib.h"
typedef struct{
int *elem;
int length;
int listsize;
}sqlist;
int Initsqlist(sqlist &L)
{
L.elem=(int*)malloc(100*sizeof(int));
if(!L.elem)
return 0;

L.length=0;L.listsize=100;

return 1;

}
int insertlist(sqlist &L,int n,int x) /*添加元素*/
{
int i;
if(n>L.length||n<1)

printf("溢出!");

for(i=L.length-1;i>=n-1;i--)
L.elem[i+1]=L.elem[i];
L.elem[n-1]=x;
for(i=0;i<=L.length;i++)
printf("%d",L.elem[i]);
L.length++;
printf("\n");
return 1;
}
int deletelist(sqlist &L,int a) /*删除元素*/
{ int i;
if(a>L.length||a<1)
printf("删除位置错误!");
for(i=a;i L.elem[i-1]=L.elem[i];
for(i=0;i printf("%d",L.elem[i]);
L.length--;
printf("\n");
return 1;
}

int duichenlist(sqlist &L) /*判断对称*/
{
int j=0;
int k=L.length-1;
while(j<=k){
if(L.elem[j]==L.elem[k]){
j++;k--;continue;}
else return 0;
}
return 1;
}

int main(int argc, char* argv[])
{
sqlist L;
int i,n,x,a;
Initsqlist(L);

printf(" 请输入线性表长度为");
scanf("%d",&L.length);

printf("请输入位序从1到%d的各元素\n",L.length );
for(i=0;i scanf("%d",&L.elem[i]);

printf("请输入在第n位插入元素x:");
scanf("%d%d",&n,&x);
insertlist(L,n,x);

printf("请输入要栓除的位置a:");
scanf("%d",&a);

deletelist(L,a);

if(duichenlist(L))
{
printf("对称!");
}
else
printf("不对称!");
printf("\n");

printf("Hello World!\n");
return 0;
}

回答2:

抛开你所谓的非值非递减排列(不明白),我说下我的思路
需要用3个指针,2个循环
让3个指针指向3个表头pa,pb,pc

第一次循环
*pc++=*pa++ (把la的值依赋给lc)
第二次次循环
*pc++=*pb++ (接着把lb的值依赋值给lc)
注意线性表LC的长度要够,
指针循环次数要控制好,不要溢出

如果你是用数组来描述的话,也可以用lc[i++]=la[j++] 的方式
但是到LB的时候要注意J要从0开始j=0;而i不变,数组lc的长度也要控制