建立一个链表,从键盘输入字符,当输入字符0时停止输入,输出输入的字符。C语言编

 我来答
青檬护肤_
推荐于2017-10-07 · TA获得超过1844个赞
知道小有建树答主
回答量:455
采纳率:50%
帮助的人:77万
展开全部

我以前写过一个小程序,其中有一部分就是这个

#include<stdio.h>

#include<malloc.h>

typedef struct list

{

int number;

struct list *link;

}linklist, Node;

linklist *creatlist1(linklist *head);//首插创建链表

linklist *creatlist2(linklist *head);//尾插创建链表

void showlist(linklist*);

int main()

{

linklist *head;

int i,j,k,l,m,n,s;

    head=(linklist*)malloc(sizeof(Node));

    head->link=NULL;

    creatlist1(head);

showlist(head);

    creatlist2(head);

    showlist(head);

return 0;  

}

//从前面插入元素创建链表

linklist *creatlist1(linklist *head)

{

Node  *p;

int x;

printf("【在链表头部插入结点】\n请输入要插入的数字,当输入0时结束:\n");

int flag=1;

while(flag)

{

scanf("%d",&x);

if(x!=0)

{

p=(Node*)malloc(sizeof(Node));

p->number=x;

p->link=head->link;

head->link=p;

}

else flag=0;

}

return head;

}

//从后面插入元素创建链表

linklist *creatlist2(linklist *head)

{

Node *p,*q;

q=head;

int i=0;

while(q->link!=NULL)

{

q=q->link;

}

int x,flag=1;

    printf("【在链表尾部插入结点】\n请输入要插入的数字,当输入0时结束:\n");

while(flag)

{

scanf("%d",&x);

if(x!=0)

{

p=(Node*)malloc(sizeof(Node));

p->number=x;

q->link=p;

q=p;

}

else 

{

            flag=0;

q->link=NULL;

}

}

return head;

}

void showlist(linklist *head)

{

Node *p;

p=head->link;

printf("链表中的元素为:\n");

while(p!=NULL)

{   

printf("%d\t",p->number);

p=p->link;

}

printf("\n");

}

那个数字可以往前插,也可以往后插,都写了,运行结果为:

太平洋来的风
2012-06-11 · TA获得超过190个赞
知道小有建树答主
回答量:582
采纳率:100%
帮助的人:255万
展开全部
#include <stdio.h>
#include <stdlib.h>

#define OVERFLOW -1
#define OK 1
#define ERROR 0

typedef int Status;
typedef char TElemType;
typedef struct BiTNode
{
TElemType data;
struct BiTNode *lchild;//左孩子指针
struct BiTNode *rchild;// 右孩子指针
}BiTNode;
typedef BiTNode *BiTree;

Status CreateBiTree(BiTree &T)
{//按给定的带空指针标记的先序序列建二叉链表
char ch;
int i;
//for (i=1;i<=50;i++)
{
ch=getchar();
if (ch==13 || ch==''|| ch<'0' || ch>'9')
{
if (i==1) printf("请输入有效数字");
return ;
}
else {
if (!(T = (BiTNode *)malloc(sizeof(BiTNode))))
exit(OVERFLOW);
T->data = ch; // 生成根结点
CreateBiTree(T->lchild); // 构造左子树
CreateBiTree(T->rchild); // 构造右子树
}
}
return OK;
} // CreateBiTree

void Display(TElemType& e)
{
printf("%c\t",e);
}

void InOrderTraverse (BiTree T, void( *visit)(TElemType& e))
{ // 先序遍历二叉树
if (T==NULL) return;
InOrderTraverse(T->lchild, visit); // 遍历左子树
visit(T->data); // 访问根结点
InOrderTraverse(T->rchild, visit); // 遍历右子树
}

void main()
{
BiTree R;
printf("输入带空指针标记的先序序列:(例如ABCD )\n");
CreateBiTree(R);
printf("该二叉树的中序序列为:\n");
InOrderTraverse(R,Display);
printf("\n");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
全叶孤帆0B8
2012-06-05 · 超过12用户采纳过TA的回答
知道答主
回答量:112
采纳率:0%
帮助的人:32.4万
展开全部
#include<stdio.h>
#include<stdlib.h>
struct node
{
char a;
struct node *next;
};
void main()
{
struct node *head,*tail,*p,*q;
head=tail=NULL;
p=(struct node *)malloc(sizeof(struct node));
printf("请从键盘上任意输入一个字符:");
scanf("%c",&p->a);
while(p->a!='0')
{
p->next=NULL;
if(head==NULL)
head=tail=p;
else
{
tail->next=p;
tail=p;
}
p=(struct node *)malloc(sizeof(struct node));
printf("请再次任意输入一个字符:");
scanf("%c",&p->a);
}
q=head;
for(;q!=NULL;q++)
{
printf("%c",q->a);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式