// 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
for(i=0;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
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;
}
抛开你所谓的非值非递减排列(不明白),我说下我的思路
需要用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的长度也要控制