| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 816 人关注过本帖
标题:刚学数据结构出现的问题!
只看楼主 加入收藏
pingweiqiang
Rank: 1
来 自:兴平
等 级:新手上路
帖 子:30
专家分:9
注 册:2010-3-15
结帖率:57.14%
收藏
已结贴  问题点数:20 回复次数:4 
刚学数据结构出现的问题!
要求一道上机实验题题,输入一组整数,存放到单链表中,并进行排序,插入,显示。我把要用的函数写出来了,就是不知道怎样进行连接呢?困惑中……求高手指点,最好带个简单的例子说明下。
搜索更多相关主题的帖子: 数据结构 
2010-03-31 21:43
树上月
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:114
专家分:154
注 册:2010-1-6
收藏
得分:20 
我编了一个简单的:其中包括,插入,遍历,删除,查找。希望对你有帮助
// efgghh.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include"stdlib.h"

struct Sqlist{
    int *elem;         //存储空间基址
    int length;        //当前长度
    int listsize;      //当前分配的存储容量
};
 
//构造一个空的线性链表
void Sq(Sqlist &lm){
    lm.elem=(int *)malloc(10*sizeof(int));
    if(!lm.elem)   
        return ;        
    lm.length=0;        //空间长度为0
    lm.listsize=10;    //初始存储容量
    return ;
};

//创建链表

void CreatSqlist(Sqlist &lm){
    int number;
    scanf("%d",&number);
    do{
        lm.elem[lm.length]=number;
        lm.length++;
        scanf("%d",&number);
    }while(number!=-1);
}


//遍历顺序表

void searchSqlist(Sqlist &lm)
{
    int i;
    for(i=0;i<lm.length;i++)
        printf("第%d个元素是:%d\n",i+1,lm.elem[i]);
}


//处理顺序表 (基数全部位于偶数前)

void SWapSqlist(Sqlist &lm)
{
    int a[100];
   
    for(int i=0,j=0;i<lm.length;i++){
        if(lm.elem[i]%2==1){
              a[j] =lm.elem[i];
            j++;
        }
    }
    for(i=0;i<lm.length;i++){
        if(lm.elem[i]%2==0){
            a[j]=lm.elem[i];
            j++;
        }
    }
        for(i=0;i<lm.length;i++)
        printf("%d  ",a[i]);
}



//在顺序表中插入元素

void InsertSqlist(Sqlist &lm,int number ,int i)
{
    int *q,*p;                                                                                                                                               
    if(i<1||i>lm.listsize){                    //i值不合法                                 
        printf("插入位置不合法!");                                                
        return ;                                                                     
    }                                                                                
     //存储空间已满,增加分配                                                        
    if(lm.length>lm.listsize){                  
        lm.elem=(int *)realloc(lm.elem, (lm.listsize+10)*sizeof(int));
        if(!lm.elem)                         //存储分配失败
        return ;                                                                                    
        lm.listsize =lm.listsize+10;         //增加存储容量
        lm.elem[i] = number;
    }
    //表不满,直接插入
    q=&(lm.elem[i-1]);                      //q为插入的位置                             
    for(p=&(lm.elem[lm.length-1]);p>=q;--p)
        *(p+1)=*p;                           //插入位置及以后的元素全部右移
    *q=number;
    ++lm.length;                                //表长加1
    for(i=0;i<lm.length;i++)
        printf("%d ",lm.elem[i]);

}

//在顺序表中删除元素

void DeleteSqlist(Sqlist &lm,int number)
{
    int i,k;
    for(i=0;i<=lm.length;i++){
        if(number==lm.elem[i]){
            for(k=i;k<=lm.length;k++)
                lm.elem[k]=lm.elem[k+1];               //删除位置及其以后的元素全部左移
            break;                                    
        }
    }
    lm.length--;                                 //表长减1
    if(i==lm.length)
        printf("没有该数!");
    for(i=0;i<lm.length;i++)
        printf("%d ",lm.elem[i]);
}

//在顺序表中查找

int SearchSqlist(Sqlist &lm,int number)           
{
    int i;
    for(i=0;i<lm.length;i++){
        if(number==lm.elem[i])
            return i+1;
    }
    if(i==lm.length)
       return 0;
}

int main(int argc, char* argv[])
{
    int i,number,lb,lc,e;
    Sqlist lm;
    Sqlist elem[100];               
    Sq(lm);
       printf("elem的地址为:%d\n",lm.elem);
    printf("length=%d\n",lm.length);
    printf("listsize=%d\n",lm.listsize);
   
    printf("输入一串数字(以-1结束):");
    CreatSqlist(lm);                         //调用创建函数
    searchSqlist(lm);                        //调用遍历函数  

    //对顺序表处理
    printf("对该表进行处理(基数全部位于偶数前)后:");   
    SWapSqlist(lm);                       //调用处理函数
    printf("\n");

    //在顺序表中插入数字
    printf("请输入你要插入的数:");  
    scanf("%d",&number);
    printf("请输入你要插入的位置:");
    scanf("%d",&i);
    InsertSqlist(lm,number,i);              //调用插入函数
    printf("\n");

    //在顺序表中删除元素
    printf("请输入你要删除的元素:");
    scanf("%d",&lb);
    DeleteSqlist(lm,lb);                    //调用删除函数
    printf("\n");

    //在顺序表中查找元素
    printf("请输入你要查找的数字:");
    scanf("%d",&lc);
    e=SearchSqlist(lm,lc);                   //e接受返回值
    if(e==0)
        printf("没有该数!");
    else
      printf("%d在顺序表中的位置是:第%d个",lc,e);
    printf("\n");
    //printf("Hello World!\n");
    return 0;
}




每一个不曾起舞的日子,都是对未来的一种辜负......
2010-04-01 16:42
asdjc
Rank: 6Rank: 6
来 自:武汉
等 级:侠之大者
威 望:7
帖 子:98
专家分:487
注 册:2010-1-22
收藏
得分:0 
应该是对的。
2010-04-06 14:31
编程小呆
Rank: 2
来 自:西电
等 级:论坛游民
帖 子:31
专家分:23
注 册:2010-3-20
收藏
得分:0 
2楼大哥真厉害
2010-04-06 15:54
czyzhuo
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:17
帖 子:230
专家分:1459
注 册:2010-3-11
收藏
得分:0 
厉害···
2010-04-07 11:17
快速回复:刚学数据结构出现的问题!
数据加载中...
 
   



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

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