| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 407 人关注过本帖
标题:求助关于单链表问题
只看楼主 加入收藏
SoftW_Fly
Rank: 1
来 自:哈尔滨
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-10-23
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:3 
求助关于单链表问题
老师布置的作业:已知带头结点的动态单链表L中的结点是按整数值递增排序的,试写一算法将值为x的结点插入到表L中,使L仍然有序。
这是我写的代码:
#include<stdio.h>
typedef int datatype;
typedef struct node{
    datatype data;
    struct node *next;
   
    } linklist;
linklist *CreatList(){
    char ch;
    linklist *head,*s,*r;
    head=NULL;
    r=NULL;
    printf("Please input the data of list,enter $ to quit:\n");
    ch=getchar();
    while(ch!='$'){
        s=malloc(sizeof(linklist));
        s->data=ch;
        if(head==NULL)head=s;
        else r->next=s;
        r=s;
        ch=getchar();
        }
    if(r!=NULL)r->next=NULL;
    return head;
    }
InSert(L,x)
    linklist *L;
    datatype x;
    {
        linklist *s,*t,*p;
        s=malloc(sizeof(linklist));
        s->data=x;
        t=L=p;
        while(t->data<=x)
            t=t->next;
        while(p->next!=t)
            p=p->next;
        s->next=t;
        p->next=s;
    }
   
main(){
    linklist *p;
    datatype x;
    p=CreatList();
    printf("Please input x you want to insert:\n");
    scanf("%d",&x);
    InSert(p,x);
    for(;p->next!=NULL;p=p->next)
        printf("%c  ",p->data);
        printf("\n");
    }
运行出错,我知道肯定是插入函数出的错,但不知道错误在哪!请老师们帮我改正一下,谢谢!
搜索更多相关主题的帖子: 单链 
2009-10-23 14:59
SoftW_Fly
Rank: 1
来 自:哈尔滨
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-10-23
收藏
得分:0 
没人能帮帮忙吗?郁闷!
2009-10-23 15:17
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:10 
#include<stdio.h>
#include<conio.h>
 typedef struct LNode
    {
        int data;
        struct LNode *next;
    }LNode,*LinkList;
LNode *CreatList(int n)
{
    LinkList p,q,L;
    int i=0,ch;
    L=(LinkList)malloc(sizeof(LNode));
    p=q=L;
    printf("给链表输入%d个值",n);
    scanf("%d",&ch);
    while(i<n)
    {
        p=(LinkList)malloc(sizeof(LNode));
        p->data=ch;
        q->next=p;
        q=p;
        scanf("%d",&ch);
        i++;
     }
     q->next=NULL;
     return L;
}
void ListInsert(LinkList L)
{
    LinkList p,q;
    int i=0,n,e;
    p=q=L;
    printf("要插入链表中的数是:");
    scanf("%d",&e);
    printf("插入的位置");
    scanf("%d",&n);
    printf("在第%d个数之前插入%d\n",n,e);
    while(i<n-1)
     {  p=p->next;
         i++;
     }
     q=(LinkList)malloc(sizeof(LNode));
     q->data=e;
     q->next=p->next;
     p->next=q;
 }
void print(LinkList L)
 {    LinkList p;
 printf("输出链表");
     p=L->next;
     do
      {
          printf("%d",p->data);
          p=p->next;
      } while(p!=NULL);
 }
void main()
{
    LinkList h;
    int n;
    scanf("%d",&n);
    h=CreatList(n);
    ListInsert(h);
    print(h);
    getch();
}
 
你看看这个吧!

离恨恰如春草,更行更远还生。
2009-10-23 15:37
SoftW_Fly
Rank: 1
来 自:哈尔滨
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-10-23
收藏
得分:0 
回复 3楼 玩出来的代码
谢谢了,不过插入位置应该由插入数据决定的而不是自己确定的,我再改改吧···
2009-10-23 15:58
快速回复:求助关于单链表问题
数据加载中...
 
   



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

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