| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 843 人关注过本帖
标题:出学者求助````
只看楼主 加入收藏
ghostql
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2008-10-12
收藏
 问题点数:0 回复次数:5 
出学者求助````
单链表的操作
建立一个单链表,依次输入有限个数据,陆续插入到此单链表中,要求输入结束后保持线性表的有序性(升序或降序)
然后,将此有序线性表打印输出,再实现单链表的节点插入、删除、逆置

哪位高手帮写个程序啊````
搜索更多相关主题的帖子: 学者 
2008-10-19 18:36
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
这不就传说中的插入排序么
2008-10-19 19:09
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
type point=^node;
     node=record
            data:elemtype;
            next:point;
          end;
var h:point;
         
procedure insert(data:elemtype);
var t,s:point;
begin
  new(s);
  s.data:=data;  
  t:=h;
  while (t<>nil) and (t^.data<data) do t:=t^.next;
  s^.next:=t^.next;
  t^.next:=s;
end;
2008-10-19 19:15
ghostql
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2008-10-12
收藏
得分:0 
[bo][un]multiple1902[/un] 在 2008-10-19 19:15 的发言:[/bo]

type point=^node;
     node=record
            data:elemtype;
            next:point;
          end;
var h:point;
         
procedure insert(data:elemtype);
var t,s:point;
begin
  new(s);
 ...



很高深,看不懂啊
2008-10-24 16:16
xiao_ou0725
Rank: 2
来 自:江苏苏州
等 级:论坛游民
帖 子:59
专家分:20
注 册:2008-10-24
收藏
得分:0 
typedef  struct  LNode{
     ElemType data;          //数据域
        struct   LNode  *next;   //后继指针域
}LNode,*LinkList

LinkList CreateList(int n) //建立n个节点的单链表
{    
    head=(LinkList)malloc(sizeof(LNode));
    head->next=NULL;//初始时头节点后继为空
    for(i=0;i<n;i++)
    {
        NewNode=(LinkList)malloc(sizeof(LNode));
                    //产生新节点
        printf("input the %dth data: ",i+1);
        scanf("%d",&(NewNode->data));// 输入节点数据
        NewNode->next=head->next;
        head->next=NewNode; //将新节点插入在头节点之后
    } //for
    return head;
}


LinkList CreateList_tail(int n) /*  尾插法建立单链表  */
{
   tail=head=(LinkList)malloc(sizeof(LNode));      
    head->next=NULL;
    for(i=0;i<n;i++){
       NewNode=(LinkList)malloc(sizeof(LNode));      
       printf("input data %i:",i+1);
       scanf("%d",&NewNode->data);     /*输入元素值*/
       tail->next=NewNode;       /*新结点连在表末尾*/
       tail=NewNode;
    }
    tail->next=NULL;                 /*结点指针域置空*/
    return head;
}

Status GetElem(LinkList L,int i,ElemType *e){
//按序号查找值
    j=1;
    p=L->next;
    while(p&&j<i){                     
        p=p->next;j++;//指针移动i-1次
    }
    if(!p||j>i)
        return ERROR;                  
   *e=p->data;                        
   return OK;
}/*GetElem*/



Status ListInsert(LinkList L,int i,ElemType e)
{     //在带头单链表中第i个位置插入元素e
       j=1;
    p=L;
    while(p&&j<i)      //找到第i个节点的直接前驱
    {    p=p->next;
        j++;      }
    if(!p||j>i) return ERROR;
    NewNode=(LinkList)malloc(sizeof(LNode));
    NewNode->data=e;
    NewNode->next =p->next;
    p->next=NewNode;     //注意两个语句的先后
    return OK;
}


Status ListDelete(LinkList L, int i, ElemType *e)
{    //     删除以L为头指针的单链表的第i个元素
    p=L;
    j=1 ;
    while(p&&j<i)  //找到第I-1个节点
    {p=p->next;            j++;    }
    if(!p||j>i) return ERROR;
    q=p->next;    p->next=q->next;  //改变指针链接
    *e=q->data;         free(q);  //释放被删节点
    return OK;
} // ListDelete_L
2008-10-24 22:03
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
[bo][un]ghostql[/un] 在 2008-10-24 16:16 的发言:[/bo]




很高深,看不懂啊

我学p的,不是学c的。
等高考完再学c。
2008-10-24 22:41
快速回复:出学者求助````
数据加载中...
 
   



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

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