回 帖 发 新 帖 刷新版面

主题:各位高手帮帮我,我刚学数据结构1节,老师就拿了作业,救命啊!

全部编成一个程序

题目:
1、定义顺序表结构;
2、初始化顺序表;
3、在顺序表中插入数据;
4、显示顺序表(查看数据是否插入到顺序表中);
5、在顺序表中查找数据;
6、在顺序表中删除数据(删除数据后再调用显示顺序表函数看看数据是否真的删除了)。
先有“#include <iostream.h>”,然后定义“sqlist”、“init”、'insert'、‘output’、‘locate’、'delete';
最后是主函数:
main(){
  init
  insert
  output
  locate
  delete
  output
}


这些是我们老师给我们说的这个程序的结构,要按照这个顺序编呵!是数据结构哦!

回复列表 (共6个回复)

沙发

太多估计没人会帮你写的!

板凳

C++来的
没能帮你

3 楼


我也是刚学的~现在已要交作业~我的题目和你的差不多~
上网找了好资料都是用C语言写的~我晕啦~
我也是用C++的~
如果你有那源程序,可不可以也发给我看看~我这几天也在努力的写~
大家交流一下~!
你可以加我Q:499272221~!

4 楼

学的严奶奶的,C
爱莫能助~~

5 楼

刚开始学 是有点不顺手 写多了 就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 楼

#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);

}

我来回复

您尚未登录,请登录后再回复。点此登录或注册