| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 536 人关注过本帖
标题:静态链表的输出有点问题,大家给看看
取消只看楼主 加入收藏
海莲
Rank: 1
等 级:新手上路
帖 子:19
专家分:5
注 册:2012-9-27
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
静态链表的输出有点问题,大家给看看
程序代码:
#include<stdio.h>
#define MAXSIZE 100
typedef int datatype;
typedef struct node
{
    datatype data;
    int link;

}snode;
typedef struct
{
    snode nodes[MAXSIZE];
    int newptr;
}slinklist;


void initlist(slinklist sl)
{
    int i;
    sl.nodes[0].link=1;
    sl.newptr=1;
    for(i=1;i<MAXSIZE-1;i++)
        sl.nodes[i].link=i+1;
    sl.nodes[MAXSIZE-1].link=-1;
}

void ceratlist(slinklist sl)
{
    int i=1,j;
    printf("请输入数据到-1时结束:\n");
    scanf("%d",&j);
    while(j!=-1)
{
       sl.nodes[i].data=j;
       i++;
       sl.newptr++;
       if(i>MAXSIZE-1) break;
       scanf("%d",&j);
   }
   sl.nodes[i-1].link=-1;


}

int find(slinklist sl,datatype x)  //按值查找
{
    int p=sl.nodes[0].link;
    while(p!=-1)
        if(sl.nodes[p].data!=x)
            p=sl.nodes[p].link;
        else
            break;
        return p;
}

int locate(slinklist sl,int i)     //按结点查找
{
    int j=0,p=sl.nodes[0].link;
    if(i<0)
        return -1;
   
    while(p!=-1&&j<i)
    {
        p=sl.nodes[p].link;
        j++;
    }
    if(i==0)
        return 0;
    return p;

}

int insert(slinklist sl,int i,datatype x)     //在静态链表第I个结点处插入一个新结点
{
    int p=locate(sl,i-1);       //查找i之前的一个结点
    int q=sl.newptr;
    if(p=-1)
        return 0;//新结点
          
    sl.newptr=sl.nodes[sl.newptr].link;
    sl.nodes[q].data=x;
    sl.nodes[q].link=sl.nodes[p].link;
    sl.nodes[p].link=q;
    return 1;
}

//移除
int remove(slinklist sl,int i)
{
    int p=locate(sl,i-1);
    int q=sl.nodes[p].link;
    if(p==-1)
        return 0;

    sl.nodes[p].link=sl.nodes[q].link;
    sl.nodes[q].link=sl.newptr;
    sl.newptr=q;
    return 1;
}

void output(slinklist sl)
{
    int i,q;
    i=0;q=1;
    printf("输出数据:\n");
   
    while(sl.nodes[q].link!=-1)
    {
        printf("%d\t",sl.nodes[q].data);
        q=sl.nodes[q].link;
        i++;
       
        if(i%5==0)
            printf("\n");
    }


}





void main()
{
    slinklist a;
    initlist(a);
    ceratlist(a);
    output(a);
    getch();
}
在输出时,说访问地址有错误,大家给看看
2012-10-18 13:13
海莲
Rank: 1
等 级:新手上路
帖 子:19
专家分:5
注 册:2012-9-27
收藏
得分:0 
回复 2楼 陌小熙
不是这个错误
2012-10-18 15:40
海莲
Rank: 1
等 级:新手上路
帖 子:19
专家分:5
注 册:2012-9-27
收藏
得分:0 
回复 5楼 babylco0
谢谢,改出来了
2012-10-22 20:24
快速回复:静态链表的输出有点问题,大家给看看
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018061 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved