主题:请各位高手帮我完成这个程序!!!(用C或C++)
juan1987mao
[专家分:0] 发布于 2007-04-14 17:46:00
建立一个顺序存储的线性表,实现线性表的插入、删除操作;
要求:
(1)建立一个按关键字有序的线性表(顺序存储的和链式存储的);
(2)从键盘上输入一个数,将该数插入到表中,使该线性表插入数据后仍按关键字有序;
(3)从键盘上输入一个数,查找表中是否存在该数,若有则删除所有与该数相等的数
最后更新于:2007-04-14 17:53:00
回复列表 (共2个回复)
沙发
dingxh [专家分:60] 发布于 2007-04-15 12:18:00
我做了一个差不多的题,你看看自己改改吧!
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct{
int *elem;
int length;
int listsize;
}SqList;
/*构造一个空的线性表L*/
void InitList_Sq(SqList &L){//构造一个空的线性表L
L.elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L.elem) exit(1);
L.length = 0;
L.listsize = LIST_INIT_SIZE;
}
/*在顺序线性表L中第I个位置之前插入新的元数e*/
void ListInsert_Sq(SqList &L,int i,ElemType e){
ElemType *q,*p;
ElemType *newbase;
if(i<1||i>L.length+1)
printf("输入的位数比线性表大了!");
if(L.length>=L.listsize)
{
newbase=(ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));
if(!newbase) exit(1);
L.elem = newbase;
L.listsize+=LISTINCREMENT;
}
q=&(L.elem[i-1]);
for(p=&(L.elem[L.length-1]);p>=q;--p)
*(p+1)=*p; /*插入位置及之后的元素右移*/
*q=e; /*插入e*/
++L.length; /*表长增加1*/
}
/*在顺序表L中删除第i个元素,并用e 返回其值*/
void ListDelete_Sq(SqList &L,int i,ElemType &e){
if((i<1)||(i>L.length))
printf("i不在范围内!");
ElemType *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;
}
/*用E返回线性表L中第I个数据元数的值*/
int GetElem_Sq(SqList L,int i,ElemType &e){
if(i<1||i>L.length)
printf("没有这个位数!");
e = L.elem[i-1];
return 1;
}
void main(){
SqList L;
ElemType e;
InitList_Sq(L);
ListInsert_Sq(L,1,1);
ListInsert_Sq(L,2,2);
ListInsert_Sq(L,3,3);
ListInsert_Sq(L,4,4);
ListInsert_Sq(L,5,5);
printf("被插入的数是1,2,3,4,5\n");
GetElem_Sq(L,2,e);
printf("第二个数是:");
printf("%d \n", e);
GetElem_Sq(L,4,e);
printf("第四个数是:");
printf("%d \n", e);
ListDelete_Sq(L,1,e);
printf("被DELETE的数是:");
printf("%d\n",e);
//GetElem_Sq(L,1,e);
}
板凳
dingxh [专家分:60] 发布于 2007-04-15 12:19:00
void main(){
SqList L;
ElemType e;
InitList_Sq(L);
ListInsert_Sq(L,1,1);
ListInsert_Sq(L,2,2);
ListInsert_Sq(L,3,3);
ListInsert_Sq(L,4,4);
ListInsert_Sq(L,5,5);
printf("被插入的数是1,2,3,4,5\n");
GetElem_Sq(L,2,e);
printf("第二个数是:");
printf("%d \n", e);
GetElem_Sq(L,4,e);
printf("第四个数是:");
printf("%d \n", e);
ListDelete_Sq(L,1,e);
printf("被DELETE的数是:");
printf("%d\n",e);
//GetElem_Sq(L,1,e);
这一部分改改就好了.相信你会的
我来回复