用c语言编程实现单链表的基本操作,有必要的类型说明,并完成下面函数的功能,

(1)CreateList():正序建立一个含有26个小写英文字母的单链表
(2)ListTransfer():将链表中所有元素的值转变成大写字母
(3)Listprint():显示单链表所有元素,此函数调用2次,分别在ListTransfer()函数调用之前,之后使用
在主函数main()中调用各个函数完成单链表的基本操作

楼主你好
代码具体如下:
#include<stdio.h>
#include<stdlib.h>

typedef struct node
{
char ch;
struct node *next;
}LinkList;

void CreatList(LinkList * &h)
{
LinkList *p;
LinkList *r=h;//尾结点 开始指向头结点
int i=0;
for(;i<26;i++)
{
p=(LinkList *)malloc(sizeof(LinkList));
p->ch='a'+i;
r->next=p;
r=p;
}
r->next=NULL;
}

void ListTransfer(LinkList *h)
{
LinkList *p=h->next;
while(p)
{
(p->ch)-='a'-'A';
p=p->next;
}
}

void ListPrint(LinkList *h)
{
LinkList *p=h->next;
while(p)
{
putchar(p->ch);
p=p->next;
}
printf("\n");
}

int main()
{
LinkList *head;
head=(LinkList *)malloc(sizeof(LinkList));

CreatList(head);
printf("转换前:\n");
ListPrint(head);
ListTransfer(head);
printf("转换后:\n");
ListPrint(head);
return 0;
}

希望能帮助你哈
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-12
// 实现下面三个函数实现将一个链表中的26个英文字母由小写变为大写,并各自输出。
//------------
//CreateList() 创建一个链表纪录26个小写的英文字母
//ListTransfer() 将链表中个各个节点有小写变为大写
//Listprint() 输入链表
//------------
# include <stdio.h>
# include <stdlib.h>
typedef struct A
{
char c;
struct A *pnext;
}YW,*PYW;
PYW CreateList()
{
int i=0;
PYW head=NULL,pnew=NULL,pwei=NULL;
head = (PYW)malloc(sizeof(YW));
if(!head)
{
printf("内存分配失败!!!\n");
exit(0);
}
head->c = 0;
head->pnext = NULL;
pwei = head;
for(i='a';i<'z'+1;i++)
{
pnew = (PYW)malloc(sizeof(YW));
if(!pnew)
{
printf("内存分配失败!!!\n");
exit(0);
}
pnew->c = i;
pnew->pnext = NULL;
pwei->pnext = pnew;
pwei = pnew;
}
return head;
}
void ListTransfer(PYW head)
{
PYW p = head->pnext;
while(p)
{
p->c -= 32;
p = p->pnext;
}
return;
}
void ListPrint(PYW head)
{
PYW p = head->pnext;
while(p)
{
printf("%c ",p->c);
p = p->pnext;
}
return;
}
int main(void)
{
PYW p = NULL;
p = CreateList();
ListPrint(p);
printf("\n");
ListTransfer(p);
ListPrint(p);
printf("\n");
return 0;
}
第2个回答  2012-11-11
楼上代码中第8行代码有误,应该写成:
void CreatList(LinkList *h)
下面是我写的:

#include<stdio.h>
#include<malloc.h>
typedef struct node
{
char c;
struct node *next;
}LinkList;
void *CreateList()
{
LinkList *p1,*p2,*head;
int i;
char ch;
p1=p2=head=(LinkList *)malloc(sizeof(LinkList));
p1->c=97;
for(i=0;i<=24;i++)
{
p1=(LinkList *)malloc(sizeof(LinkList));
p1->c=98+i;
p2->next=p1;
p2=p1;
}
return head;
}
void Listprint(LinkList *head)
{
LinkList *p;
int i;
p=head;
for(i=0;i<=25;i++)
{
printf("%c ",p->c);
p=p->next;
}
printf("\n\n");
}
void *ListTransfer(LinkList *head)
{
LinkList *p;
int i;
p=head;
for(i=0;i<=25;i++)
{
p->c=p->c-32; //转化为大写
p=p->next;
}
return head;
}
void main()
{
LinkList *head;
head=CreateList();
printf("Output words a~z in lowercase\n");
Listprint(head); //在ListTransfer函数调用之前调用Listprint函数,输出a~z小写字母
head=ListTransfer(head);
printf("Output words A~Z in capital\n");
Listprint(head); //在ListTransfer函数调用之后调用Listprint函数,输出转换后a~z大写字母
printf("\n");
}
相似回答