| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 593 人关注过本帖
标题:生成链表长度比我输入的少2,指针哪里指错了?
只看楼主 加入收藏
lovelysssss
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-10-26
结帖率:50%
收藏
 问题点数:0 回复次数:4 
生成链表长度比我输入的少2,指针哪里指错了?
程序功能:把一个含有数字,字母,其他字符的链表分成三个,并用原来的空间进行存储,头结点可以另外开辟空间


#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
typedef char datatype;  //声明类型
typedef struct node
{datatype data;
struct node *next;
}linklist;
char SCAN()            //输入函数
{char r;
 scanf("%c",&r);
 return r;
 }
 
 
linklist *CREATLIST(int n)     //建立链表的函数,参数为n,由用户输入,通过输入函数,获取链表的数据域
{  int i;
   linklist *head,*p,*q;
   head=NULL;p=NULL;q=NULL;
  for(i=0;i<=n;i++)
    {
       p=(linklist*)malloc(sizeof(linklist));
       p->data=SCAN();
       p->next=NULL;
       if(head==NULL)
           head=p;
        else
            q->next=p;
        q=p;
    }
   return head;
}
void PRINT(linklist *head)     //打印链表函数
{
   linklist *p;
   p=head->next;
   while(p!=NULL)
   {
    printf("%c",p->data);
   p=p->next;
   }
   printf("\n");
}

void SEPARATE(linklist *head,linklist **L1,linklist **L2)
{
printf("separate");
linklist *p,*q,*t,*r;
*L1=(linklist*)malloc(sizeof(linklist));//生成数字链表头结点
*L2=(linklist*)malloc(sizeof(linklist));//生成字母链表头结点
r=head->next ;         //r遍历整个链表
p=*L1;                 //p连接数字指针
q=*L2;                  //q连接字母指针
t=head;                 //head 作为其他字符的头指针,t用于连接其他字符结点
while(r!=NULL)
{
if(r->data>='0'&&r->data<='9')
{
p->next=r;
p=r;
}
else if((r->data>='a'&&r->data<='z')||(r->data>='A'&&r->data<='Z'))
{
q->next=r;
q=r;
}
else
{
t->next=r;
t=r;
}
r=r->next;
}
p->next=NULL;
q->next=NULL;
t->next=NULL;
}

int main()
{int a;
linklist *head,*L1,*L2;
printf("please input the length of the linklist!\n");
scanf("%d",&a);
printf("please input the data of the linklist!\n");
head=CREATLIST(a);
PRINT(head);
SEPARATE(head,&L1,&L2);
PRINT(head);
PRINT(L1);
PRINT(L2);
while(1);
   }


出现的问题 :例如:我输入链表长度为5,输入三个数据后,输入终止并出现运行结果。
那位仁兄帮忙看一下错在哪里了?
是指针指错了吗?
搜索更多相关主题的帖子: 链表 指针 长度 指错 输入 
2010-10-30 01:29
chinesebear
Rank: 2
等 级:论坛游民
帖 子:23
专家分:29
注 册:2010-9-30
收藏
得分:0 
while(1);
这不是个死循环吗? 不理解
2010-10-30 10:25
lovelysssss
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-10-26
收藏
得分:0 
以下是引用chinesebear在2010-10-30 10:25:00的发言:

while(1);这不是个死循环吗? 不理解
这个没关系的, 只是让它不自动退出,持续显示结果而已
 
2010-10-30 12:43
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
收藏
得分:0 
都没分!

If You Want Something, Go Get It, Period.
2010-10-30 12:49
lovelysssss
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-10-26
收藏
得分:0 
回复 4楼 m21wo
不好意思, 新人一只,没有分,如何获得分数?
好吧,我到别处问一下吧
2010-10-30 13:28
快速回复:生成链表长度比我输入的少2,指针哪里指错了?
数据加载中...
 
   



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

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