#include<stdio.h>
#include<stdlib.h>
#define TURE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef int status;
typedef int ElemType;
typedef struct{
ElemType *elem;
int length;
int listlize;
}SqList;
status InitList(SqList &L) //初始化順序表
{//構造一個空的順序表L
L.elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L.elem) exit(OVERFLOW);
L.length = 0;
L.listlize = LIST_INIT_SIZE;
return OK;
}
status CreateList(SqList &L) //建立順序表
{
int i,j;
printf("請輸入有序表長度:\n");
scanf("%d",&j);
if(j>LIST_INIT_SIZE) //當輸入的元素個數大于當前元素的個數
{
L.elem = (ElemType *)realloc(L.elem,(j+LISTINCREMENT)*sizeof(ElemType));
L.listlize = j + LISTINCREMENT;
}
printf("請輸入有序表的元素:\n");
for(i = 0;i<j;i++)
scanf("%d",&L.elem[i]);
printf("當前有序表為: ");
for(i = 0;i<j;i++)
printf("%d ",L.elem[i]);
printf("\n");
L.length =j;
return OK;
}
status ListDelete(SqList &L,int i, ElemType &e) //在順序表中洗掉第i個元素,并用e回傳其值
{
if((i<1)||(i>L.length)) return ERROR;
int *p,*q;
p = &(L.elem[i-1]);
e = *p;
q = L.elem + L.length-1;
for (++p;p<=q;++p)
*(p -1) = *p;
--L.length;
return OK;
}
status delxy(SqList &L, int x, int y)
{
int i,m,n,e,k=0;
// for(i = 0;i<L.length;i++)
// if(!(L.elem[i]==x)||!(L.elem[i]==y))return ERROR;
for(i=0;i<L.length;i++)
{
if(L.elem[i]==x)m=i;break;
}
printf("%d",m);
for(i=L.length-1;i>=0;i--)
{
if(L.elem[i]==y)n=i;break;
}
printf("%d",n);
for(i = m+1;k<=(n-m);k++)
ListDelete(L,i,e);
return OK;
}
void ListTraverse(SqList L)
{
int i;
for(i = 1;i<= L.length;i++)
printf("%d ",L.elem[i-1]);
}
int main ()
{
int x,y;
SqList L;
InitList(L);
CreateList(L);
printf("請輸入x:\n");
scanf("%d",&x);
printf("請輸入y:\n");
scanf("%d",&y);
delxy(L,x,y);
printf("洗掉操作完成!當前有序表為:");
ListTraverse(L);
printf("\n");
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/69130.html
標籤:基礎類
上一篇:在xe3中開發activex組件,給介面添加方法后,在什么地方輸入代碼?
下一篇:有沒有人用ODBC的SQLBulkOperations向informix資料庫插入long data的?求賜教啊
