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

怎么建立一个简单的顺序表,我快哭了。。

编程的未来 发布于 2013-03-28 15:08, 1003 次点击
#include<stdio.h>
#include<stdlib.h>
#define maxsize 1024

typedef struct
{
    int data[maxsize];
    int last;
}sequenlist;

int main()
{

    sequenlist *L;   
    int number,i,j;
    scanf("%d",&number);
    while(number != 0)
    {
        for(i = 0;i < 10;i++)
        {
            (*L).data[i] = number;
            scanf("%d",&number);
        }
        for(j = 0;j<10;j++)
        {
            printf("%d",(*L).data[j]);
        }

    }

    return 0;
}
7 回复
#2
yuccn2013-03-28 15:24
int main()
 {
 
    sequenlist *L;   
    int number,i,j;
     scanf("%d",&number);
     while(number != 0)
     {
         for(i = 0;i < 10;i++)
         {
             (*L).data[i] = number;// 哭也没有用的,这块内存你还没有申请,野指针,外面 new 一下吧
             scanf("%d",&number);
         }
         for(j = 0;j<10;j++)
         {
             printf("%d",(*L).data[j]);
         }
 
    }
 
    return 0;
 }
#3
编程的未来2013-03-28 15:50
回复 2楼 yuccn
现在去整理一下,不过还是搞不定
#4
yuccn2013-03-28 16:37
调整成什么样子了?
#5
编程的未来2013-03-28 18:43
回复 4楼 yuccn
今晚继续开夜车弄出来,要完成 建立,插入,删除,我才弄到在第二步。
#include<stdio.h>
#include<stdlib.h>
#define maxsize 1024

typedef struct
{
    int data[maxsize];
    int last;
}sequenlist;

main()
{
sequenlist *L;  
L = (sequenlist*)malloc(sizeof(sequenlist));
    int number,i,j,p,q;
    int a,b,c;
    printf("The number of num:");
 
    scanf("%d",&p);
    printf("Please input  %d number:",p);
   
    (*L).last = 0;
    for(i = 0;i <p ;i++)
    {
scanf("%d",&number);
        (*L).data[i] = number;
        (*L).last = (*L).last + 1;
    }
        
        for(j = 0;j < p;j++)
        {
            printf("%d  ",(*L).data[j]);
              
}
        
        printf("111\n");
        
 
        printf("插入第几位:");
scanf("%d",&a);
printf("459");
        getchar();
        printf("Plese input the position you want to put in:");
        if((a < 1) || (a > p))
        {
   printf("error");
}
        
        else
        {
printf("P;ease input the number.");
        scanf("%d",&c);
        printf("459");
        getchar();
        
           for(b = p;b >= p - a;b--)
           {
              (*L).data[b+1] = (*L).data[b];
           }
  (*L).data[b-1] = c;   
          }
          for(j = 0;j < p +1;j++)
        {
            printf("%d  ",(*L).data[j]);
              
}
        
        printf("111\n");
        getchar();
        getchar();
 
}
#6
azzbcc2013-03-28 18:59
L->last 可以代替 (*L).last
#7
yuccn2013-03-28 19:08
printf("插入第几位:");
 scanf("%d",&a);

你这个地方说明要插入的位置是a吧

不过
for(b = p;b >= p - a;b--)
{
    (*L).data[b+1] = (*L).data[b];
}
 
(*L).data[b-1] = c;  

好像你把数据插入到 b - 1
而在for循环结束的时候 b = p - a - 1;
也就是你把数据插入到的位置是 p - a - 2 的位置了
#8
不玩虚的2013-04-01 13:07
这个版的顺序表都要成堆了,好多顺序表啊。
1