注册 登录
编程论坛 数据结构与算法

线性表的操作求高手来看一下

liuguanglei 发布于 2012-11-01 00:29, 497 次点击
#include<stdio.h>
#define LIST_INIT_SIZE 100
#define listincrement 10
//定义线性表的结构体表头
typedef struct
{
    Elemtype *elem;
    int length;
    int listsize;
}Sq;
Initlist(Sq  &L)
{
    L.elem=(Elemtype * )malloc(LIST_INIT_SIZE * sizeof(Elemtype));
    if(!L.elem)
        return error;
    int length=0;
    int listsize=LIST_INIT_SIZE;
    return ;
}
ListDelete(Sq &L,int i)
{
    int j;
    for(j=i+1;j<=L.length-1;j++)
        L.elem[j-1]=L.elem[j];
    L.length--;
}
ListInsert(Sq &L,int i,Elemtype x)
{
    int j;
    for(j=L.length;j>=i+1;j--)
        L.elem[j+1]=L.elem[j];
           L.elem[i+1]=x;
        L.length++;
        return ;
}
int main()
{
    int L[9];
    int i;
    printf("please input 9 numbers");
    for(i=0;i<9;i++)
        scanf("%d",&L[i]);
    ListDelete(L,5);
    ListInsert(L,4,8);
}
6 回复
#2
寒风中的细雨2012-11-01 09:35
语法错误

只有去看基础知识了     类型的重命名   函数的返回值    函数的签名   参数的形实结合(传递参数的规则)
#3
爱闹的娃2012-11-01 11:48
程序代码:
#include<stdio.h>
#define LIST_INIT_SIZE 100
#define listincrement 10
//定义线性表的结构体表头
typedef struct
{
    Elemtype *elem;
    int length;
    int listsize;
}Sq;
Initlist(Sq  &L)//没有返回类型,再则c语言里面没有引用
{
    L.elem=(Elemtype * )malloc(LIST_INIT_SIZE * sizeof(Elemtype));
    if(!L.elem)
        return error;
    int length=0;
    int listsize=LIST_INIT_SIZE;//重定义了.....listsize
    return ;
}
ListDelete(Sq &L,int i)//同上
{
    int j;
    for(j=i+1;j<=L.length-1;j++)
        L.elem[j-1]=L.elem[j];
    L.length--;
}
ListInsert(Sq &L,int i,Elemtype x)//同上
{
    int j;
    for(j=L.length;j>=i+1;j--)
        L.elem[j+1]=L.elem[j];
           L.elem[i+1]=x;
        L.length++;
        return ;
}
int main()
{
    int L[9];
    int i;
    printf("please input 9 numbers");
    for(i=0;i<9;i++)
        scanf("%d",&L[i]);
    ListDelete(L,5);
    ListInsert(L,4,8);
  return 0;//这里少了return
}

建议LZ还是多看看基础知识吧.....
#4
凌云飞翔2012-11-01 12:29
楼主是用动态链表做还是用数组的做分清呀,语法错误很多。。
#5
凌云飞翔2012-11-01 13:38
程序代码:
#include<stdio.h>
#include <stdlib.h>

 #define LIST_INIT_SIZE 100

 #define listincrement 10

 //定义线性表的结构体表头
typedef struct

 {
     int *elem;
     int length;
     int listsize;

 }Sq;
int Initlist(Sq  &L)

 {
     L.elem=(int * )malloc(LIST_INIT_SIZE * sizeof(int));
     if(!L.elem)
         return 0;
       L.length=9 ;
     L.listsize=LIST_INIT_SIZE;
     return  1  ;

 }
   int ListDelete(Sq &L,int i)

 {     int *p ,*q  ;
       p=&(L.elem[i-1])  ;
   q=L.elem+L.length-1  ;
   for (++p ;p<=q;++p)
       *(p-1)=*p  ;
     --L.length ;

 return  1  ;


 }

 int ListInsert(Sq &L,int i,int x)

 {    int *p ,*q  ;
     q=&(L.elem[i-1]);

 for (p=&(L.elem[L.length-1]);  p>=q ;--p )
     *(p+1)=*p ;
      *q=x ;
      ++L.length ;
      return  1 ;

 }
  
    main()

 {   Sq  L  ;
     Initlist( L);
     int i;
     printf("please input 9 numbers\n");
     for(i=0;i<9;i++)
     scanf("%d",&L.elem[i]);
     ListDelete(L,5);
     printf ("删除第五个数:\n");
     for(i=0;i<8;i++)
     printf ("%4d",L.elem[i]);
     ListInsert(L,4,8);
     printf ("\n在第4个位置后插入数字8:\n");
    for(i=0;i<9;i++)
     printf ("%4d",L.elem[i]);
  printf ("\n");

 }

 仅供参考。。。以后要多看书


#6
fanjinxiang2012-11-01 14:18
数据结构上的东西要好好看看,不能只照搬打上去
#7
liuguanglei2012-11-01 15:10
回复 5楼 凌云飞翔
谢了了,明白是怎么回事!就是很难实现
1