主题:各位高手帮帮我,我刚学数据结构1节,老师就拿了作业,救命啊!
zhangzhengyu
[专家分:0] 发布于 2006-03-23 00:26:00
全部编成一个程序
题目:
1、定义顺序表结构;
2、初始化顺序表;
3、在顺序表中插入数据;
4、显示顺序表(查看数据是否插入到顺序表中);
5、在顺序表中查找数据;
6、在顺序表中删除数据(删除数据后再调用显示顺序表函数看看数据是否真的删除了)。
先有“#include <iostream.h>”,然后定义“sqlist”、“init”、'insert'、‘output’、‘locate’、'delete';
最后是主函数:
main(){
init
insert
output
locate
delete
output
}
这些是我们老师给我们说的这个程序的结构,要按照这个顺序编呵!是数据结构哦!
回复列表 (共6个回复)
沙发
lusuo [专家分:10100] 发布于 2006-03-23 07:55:00
太多估计没人会帮你写的!
板凳
海上飞洪 [专家分:520] 发布于 2006-03-23 10:15:00
C++来的
没能帮你
3 楼
点一点 [专家分:0] 发布于 2006-03-23 11:08:00
我也是刚学的~现在已要交作业~我的题目和你的差不多~
上网找了好资料都是用C语言写的~我晕啦~
我也是用C++的~
如果你有那源程序,可不可以也发给我看看~我这几天也在努力的写~
大家交流一下~!
你可以加我Q:499272221~!
4 楼
★太昊伏羲★ [专家分:20] 发布于 2006-03-23 11:11:00
学的严奶奶的,C
爱莫能助~~
5 楼
中国台湾 [专家分:2140] 发布于 2006-03-23 12:51:00
刚开始学 是有点不顺手 写多了 就OK了 我给你提供一个女孩子写的 很好的 向那个女孩子学习
#include<stdio.h>
#include<stdlib.h>
typedef int Status;
typedef int ElemType;
#define OK 1
#define ERROR -1
#define OVERFLOW -2
#define LIST_INIT_SIZE 10
#define LISTINCREMENT 10
typedef struct {
ElemType *elem;
int length;
int listsize;
}SqList;
Status InitList_Sq(SqList *L){
(*L).elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!((*L).elem)) return OVERFLOW;
(*L).length=0;
(*L).listsize=LIST_INIT_SIZE;
return OK;
}/*InitList_Sq*/
Status ListInsert_Sq(SqList *L,int i,ElemType e){
ElemType *newbase, *p , *q;
if(i<1||i>L->length+1) return ERROR;
if(L->length>=L->listsize){
newbase=(ElemType *)realloc(L->elem,(L->listsize+LISTINCREMENT)*sizeof(ElemType));
if(!(*newbase)) exit(OVERFLOW);
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;
++L->length;
return OK;
}/*ListInsert_Sq*/
Status ListDelete_Sq(SqList *L,int i,ElemType e){
ElemType *p , *q;
if(i<1||(i>L->length)) return ERROR;
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;
}/*ListDelete_Sq*/
//定义compare函数.
Status compare(ElemType x,ElemType y){
if(x==y)
return OK;
else
return 0;
}
Status LocateElem_Sq(SqList L,ElemType e){
ElemType i,*p;
i=1;
p=L.elem;
while(i<=L.length&&!(*compare)(*p++,e))
++i;
if(i<=L.length)
return i;
else return 0;
}/*LocateElem_Sq*/
void main(){
int e;
SqList L;
int select,i;
if(InitList_Sq(&L)==OVERFLOW) printf("ERROR");
else
{ printf("请输入线性表的元素:");
for( i=0;i<L.listsize;i++)
{scanf("%d",&L.elem[i]);L.length++;}
printf("插入前的线性表:\n");
for (i = 0; i< L.listsize; i++)
printf("%d ",L.elem[i]);
printf("\n");
do{
printf("\n0:To Add A Elem\n");
printf("1:To Delete A Elem\n");
printf("2:To Locate A Elem\n");
printf("3:Over\n");
scanf("%d",&select);
switch(select){
case 0:printf("请输入插入元素的位置及被插入的元素:");
scanf("%d%d",&i,&e);
ListInsert_Sq(&L,i,e);printf("The Add Position Is:%d\nTo Add A Elem Is%d\n",i,e);
printf("插入后的线性表:\n");
for(i=0;i<L.length;i++)
printf("%4d",L.elem[i]);break;
case 1:printf("请输入删除元素的位置:");
scanf("%d",&i);
ListDelete_Sq(&L,i,e);
printf("The Delete Position Is:%d\n",i);
printf("删除后的线性表:\n");
for(i=0;i<(L.length);i++)
printf("%4d",L.elem[i]);break;
case 2:printf("请输入要查找的元素.");
scanf("%d",&e);
printf("The Position Of The Elem Is:%d",LocateElem_Sq(L,e));break;
case 3:printf("OVER");
printf("\n");break;
default:printf("Please Input The Digital Number between 0-3");
printf("\n");
}
}while(select!=3);
}
}
6 楼
zjkzxy [专家分:310] 发布于 2006-03-23 13:21:00
#include <stdio.h>
#include <iostream.h>
#include <malloc.h>
#define OK 1
#define ERROR 0
typedef int Status;
#define LIST_INIT_SIZE 20
#define LISTINCREMENT 10
typedef struct
{int *elem;
int length;
int listsize;
}SqList;
Status InitList_Sq(SqList &L)
{//初始化构造一个空的线性表
L.elem=(int *)malloc( LIST_INIT_SIZE*sizeof(int));
if(!L.elem) return(ERROR);
L.length=0;
L.listsize=LIST_INIT_SIZE;
return OK;
}
Status ListInsert_Sq(SqList &L,int i,int e)
{//在线性表L中第i个位置之前插入新的元素e
int *newbase,*p,*q;
if(i<1 ||i>L.length+1) return ERROR;
if(L.length>=L.listsize)
{newbase=(int *)realloc(L.elem,(LIST_INIT_SIZE+LISTINCREMENT)*sizeof(int));
if(!newbase) return ERROR;
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;
L.length++;
return OK;
}
void output_Sq(SqList L)
{//显示顺序表中的 数据
int i;
for(i=0;i<L.length;i++)
printf("%3d",L.elem[i]);
printf("\n");
}
Status compare(int x,int y)
{if(x==y) return 1;
else return 0;
}
Status LocateElem_Sq(SqList L,int e )
{//在顺序表L中查换和e相等的数据
int i;
for(i=0;i<L.length;i++)
if((*compare)(L.elem[i],e)) break;
if(i<L.length) return (i+1);
else return 0;
}
Status ListDelete_Sq(SqList &L,int i,int &e)
{//删除线性表L中第i个位置上的数据元素,并用e返回其值
int *q,*p;
if(i<1||i>L.length) return ERROR;
q=L.elem+i-1;
e=*q;
p=L.elem+L.length-1;
for(q++;q<=p;q++) *(q-1)=*q;
L.length--;
return OK;
}
main()
{SqList L;
int i,e,choice;
InitList_Sq(L);
printf("请输入线性表的元素个数:");
scanf("%d",&L.length);
printf("请输入线性表的元素:");
for(i=0;i<L.length;i++)
scanf("%d",&L.elem[i]);
output_Sq(L);
do
{printf("1.顺序表中插入数据 2.顺序表中查换数据 3.顺序表中删除数据 4.退出");
printf("\n请输入你的选择:");
scanf("%d",&choice);
switch(choice)
{case 1: printf("\n请输入插入的位置和插入的元素:");
scanf("%d%d",&i,&e);ListInsert_Sq(L,i,e);printf("\n插入的位置是%d,插入的元素是%d",i,e);
printf("\n插入数据元素后的线性表为:");output_Sq(L);break;
case 2: printf("请输入要查找的数据:"); scanf("%d",&e);
printf("\n要查找的数据是%d",e);printf("\n线性表中被查到元素的位置是%d\n",LocateElem_Sq(L,e));break;
case 3: printf("请输入要删除第几个元素的位置:");scanf("%d",&i);
printf("\n删除的位置是%d",i);ListDelete_Sq(L,i,e); printf("\n删除数据元素后的线性表为:");output_Sq(L);break;
case 4: printf("操作结束");printf("\n");break;
default:printf("Please Input The Digital Number between 1-4");
printf("\n");}
}while(choice!=4);
}
我来回复