august 发表于 2007-6-2 04:44:45

顺序表

程序如下:

#include<stdio.h>
struct list
{
    char list1;
    int size;
};
void setnull(struct list *p)
{
    p->size=0;

}
int length(struct list *p)
{
    return(p->size);
}

void insert(struct list *p,char x,int i)
{
    int j;
    if(i<1&&i>p->size+1)
      printf("无法插入.");
    else
    {
      p->size++;
      for(j=p->size-1;j<=i;j--)
            p->list1=p->list1;
      p->list1=x;
    }
}
void del(struct list *p,int i)
{
    int j;
    if(i>p->size||i<1)
      printf("不正确.");
    else
    {
      for(j=i-1;j<p->size-1;j++)
            p->list1=p->list1;
      p->size--;
    }
}
display(struct list *p)
{
    int j;
    for(j=0;j<p->size-1;j++)
      printf("%c-",p->list1);
    printf("%c",p->list1);
}
void main()
{
    struct list l;
    setnull(&l);
    insert(&l,'a',1);
    insert(&l,'b',2);
    insert(&l,'c',3);
    display(&l);
}

这个顺序表的程序为什么运行不了呢?要怎么修改才可以呢?

Zelsazgh 发表于 2007-6-2 06:36:59

主要更新模块
void insert(struct list *p,char x,int i)
    {
      int j;
      if(i<1&&i>p->size+1)
            printf("无法插入.");
      else
      {
            p->size++;
            for(j=p->size-1;j>=i-1;j--)
                p->list1=p->list1;
            p->list1=x;
      }
    }
以上....

august 发表于 2007-6-2 07:07:29

似乎还是不行的说, 是插入怎么会是 p->list=p->list呢,怎么也应该是 J-1赋给 J 吧

Zelsazgh 发表于 2007-6-2 07:17:11

那个是J,是小写的j它与[重合了
还有忘了说了,你的顺序表一开始时没有初使化数据,所以无法执行插入操作.....
void create(struct list *p,int i)
{
      char cdata;
      int count;
       p->size=i;
       for(count=0;count<=i-1;count++)
      {
               scanf("%c",&cdata);
               p->list1=cdata;
         }
   }
页: [1]
查看完整版本: 顺序表