线性表的顺序存储

没想到做出来和数组一样

 

线性表的顺序存储

 

Time Limit:   1000MS       Memory Limit:   65535KB
Submissions:   1691       Accepted:   457

 

Description

建立长度为n的顺序表SeqList,长度n通过和n个数据元素通过键盘输入。

要求:

    1)通过调用插入函数,建立一个长度为n的顺序表类的对象,新插入的元素始终插入到第0号位置;

    2)在顺序表SeqList中增加一个删除函数,要求删除顺序表中等于item的所有元素。

 

Input

输入共有三行,第一行是一个整数n,表示线性表的长度; 第二行输入一个整数item,指定被删除的数据元素值; 第三行是输入n个整数数据元素;

 

Output

第一行输出第一个线性表的所有数据元素; 第二行输出删除指定数据元素后的线性表的所有数据元素;

 

Sample Input

 

10
55
1 2 33 44 55 55 55 44 55 12

 

Sample Output

 

12 55 44 55 55 55 44 33 2 1
12 44 44 33 2 1

 

 

# include<stdio.h>
# define Size 1000
int size;
struct node
{
    int date[Size];
}SeqList;//似乎不用结构体也一样
void ListInsert(int item)//插入
{
    int i;
   for(i=size;i>0;i--)
       SeqList.date[i]=SeqList.date[i-1];
   SeqList.date[0]=item;
   size++;
}
int ListDelete(int item)//删除
{
 int i=0,j;
 while(SeqList.date[i]!=item)
     i++;
 for(j=i+1;j<size;j++)
     if(SeqList.date[j]!=item)
     {
     SeqList.date[i]=SeqList.date[j];
     i++;
     }
 return i;
}
int main()
{
    int nNum,num,i,sign;
    size=0;
    scanf("%d",&nNum);
    scanf("%d",&num);
    for(i=0;i<nNum;i++)
    {
        scanf("%d",&sign);
        ListInsert(sign);
    }
    for(i=0;i<nNum-1;i++)
        printf("%d ",SeqList.date[i]);
    printf("%d\n",SeqList.date[i]);
    size=ListDelete(num);
    for(i=0;i<size-1;i++)
        printf("%d ",SeqList.date[i]);
    printf("%d\n",SeqList.date[i]);
    return 0;
}

 这样似乎更像线性表的顺序存储哈

# include<stdio.h>
# define Size 1000
int size;
typedef int DATE;
typedef struct
{
    DATE date[Size+1];
    int length;
}SeqList;
void SeqListInit(SeqList *SL)//初始化
{
    SL->length=0;
}
void SeqListInsert(SeqList *SL,DATE item)//插入
{
    int i;
   for(i=SL->length;i>0;i--)
       SL->date[i]=SL->date[i-1];
   SL->date[0]=item;
   SL->length++;
}
int SeqListDelete(SeqList *SL,DATE item)//删除
{
 int i=0,j;
 while(SL->date[i]!=item)
     i++;
 for(j=i+1;j<SL->length;j++)
     if(SL->date[j]!=item)
     {
     SL->date[i]=SL->date[j];
     i++;
     }
 return i;
}
int main()
{
    int nNum,num,i,sign;
    size=0;
    SeqList SL;
    SeqListInit(&SL);
    scanf("%d",&nNum);
    scanf("%d",&num);
    for(i=0;i<nNum;i++)
    {
        scanf("%d",&sign);
        SeqListInsert(&SL,sign);
    }
    for(i=0;i<nNum-1;i++)
        printf("%d ",SL.date[i]);
    printf("%d\n",SL.date[i]);
    SL.length=SeqListDelete(&SL,num);
    for(i=0;i<SL.length-1;i++)
        printf("%d ",SL.date[i]);
    printf("%d\n",SL.date[i]);
    return 0;
}

 

 

 

posted on 2012-05-19 23:23  即为将军  阅读(521)  评论(0)    收藏  举报

导航