| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 451 人关注过本帖
标题:关于c链表的问题,高手帮忙看看是什么问题
只看楼主 加入收藏
曹操cc
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2009-4-24
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:1 
关于c链表的问题,高手帮忙看看是什么问题
这是创建一个字符串链表的工程,插入字符串同时升序排序  用的是dev c++。gcc编译器
以下程序已经编译通过可以运行,但没有达到预想结果;
此工程包涵3个文件 main1.c  strin.c list.h
main1.c:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "liste.h"
main()
{
   char p[10];
   char *s;
   int i;
   string *head,*star;
   head=(string*)malloc(sizeof(string));
   if(head==NULL)
   {
     printf("error");
     exit(1);
                     }
  head->p1=NULL;
  head->string1="hello";
   do{
       printf("input:");
       gets(p);
       puts(p);
       s=p;
       i=insert3(&head,s);
       printf("i=%d\n",i);
       }while(i!=0&&strlen(p)!=0);
   printf("over\n");
   do{
       printf("string=%s\n",head->string1);
       head=head->p1;
       }while(head!=NULL);
       system("pause");
       }
      
      

      
      
strin.c
/*字符串链表排序插入*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "liste.h"
int insert3(string **rootb,char *ps)
{
    string *h;
    string *new1;
    int x;
    printf("1  ");
    while((h=*rootb)!=NULL&&(x=strcmp(h->string1,ps))<0)/*选择正确的位置插入*/
      {      
               printf("x=%d\n",x);
               printf("h->string1=%s\n",h->string1);
               printf("ps=%s\n",ps);/*以上3条语句为测试语句*/
               rootb=&h->p1;   
                                                             }
   
     if(x==0)
    {
       printf("3  \n");/*测试语句*/
       return 0;
                     }
   new1=(string*)malloc(sizeof(string));
   if(new1==NULL)
       return 0;
       new1->string1=ps;
       printf("sting=%s",new1->string1);/*测试语句*/
       /*插入*/
       new1->p1=h;
       *rootb=new1;
       return 1;
       }

liste.h
typedef struct str{
                 struct str *p1;
                 char *string1;
                       }string;
typedef struct node{
                 struct node *link;
                 string *str1;
                 char x;
                       }list;
               

搜索更多相关主题的帖子: 链表 
2009-08-31 23:02
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:10 
你的insert3函数里的
new1->string1=ps;  /*这条赋值有误,这里new1->string1等于指向了主函数的字符串数组p,没能达到想要的字符串赋值,要用strcpy函数*/
可能你疏忽了,改成下面这样就可以了。
strcpy(new1->string1,ps);

努力—前进—变老—退休—入土
2009-09-01 00:04
快速回复:关于c链表的问题,高手帮忙看看是什么问题
数据加载中...
 
   



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

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