c语言中如何把数组改正指针

#include<stdio.h>#include<stdlib.h>typedefstructpointer{chardat;structpointer*link;}p... #include<stdio.h>
#include<stdlib.h>
typedef struct pointer{
char dat;
struct pointer *link;
} pointer;
void readdata(pointer *head){ //读集合
pointer *p;
char tmp[10],tmp2,tmp3;
int i=0;
printf("input data ('0' for end):");

scanf("%s",&tmp);
while(tmp[i]!='\0')
{
if( (tmp[i]<'a') || (tmp[i]>'z') )
{
printf("输入错误!必须为小写字母!ee\n");
return;
}
p=(pointer *)malloc(sizeof(struct pointer));
p->dat=tmp[i];
p->link=head->link;
head->link=p;
i++;
这里面如何把数组 char tmp[10]改成指针类型的
展开
 我来答
瑞候端瓜0Y
2017-06-16 · TA获得超过2038个赞
知道小有建树答主
回答量:323
采纳率:100%
帮助的人:88.3万
展开全部
// 测试结果:
// 请输入小写字母串:abcdef
// abcdef  [输出]

#include<stdio.h>
#include<stdlib.h>

typedef struct pointer
{
    char dat;
    struct pointer *link;
} pointer;

pointer *readdata(pointer *head)
{ //读集合
    //原代码char tmp[10];
    //原代码char tmp2,tmp3;
    char *tmp;         //tmp是指针
    int n=10;          //动态数组的大小
    pointer *p;        //p是新节点
    pointer *current;  //current指向当前节点
    int i=0;

    //动态分配内存
    tmp=(char *)malloc( n * sizeof(char) );

    //原代码printf("input data ('0' for end):");
    //原代码scanf("%s",&tmp);
    printf("请输入小写字母串:");
    scanf("%s",tmp);

    while(*(tmp+i) != '\0')
    {
        if( (*(tmp+i)<'a') || (*(tmp+i)>'z') )
        {
            printf("输入错误!必须为小写字母!ee\n");
            return NULL;
        }
        i++;
    }

    i=0;
    while(*(tmp+i) != '\0')
    {
        p=(pointer *)malloc(sizeof(struct pointer));
        p->dat = *(tmp+i);
        p->link = NULL;

        if(head==NULL)
        {
            head=p;
            current=head;  //current指向当前节点
        }
        else
        {
            current->link=p;
            current=p;        //current指向当前节点
        }
        //原代码p->link=head->link;
        //原代码head->link=p;

        i++;
    }
    return head; //函数readdata()有返回值,返回链表头
}

void printData(pointer *head) //打印链表
{
    pointer *p;
    if(head==NULL)
    {
        printf("\n链表没有数据.\n");
        return;
    }
    p=head;
    while(p!=NULL)
    {
        printf("%c",p->dat);
        p=p->link;
    }
    printf("\n");
}

int main()
{
    pointer *head=NULL;

    head=readdata(head); //创建链表

    printData(head);      //打印链表

    return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式