这段代码编译连接都成功,可是运行时没反应啊
用C语言编程实现单链表的基本操作。有必要的类型说明,并完成下述函数功能:
(1)CreateList( ):逆序建立一个(带有头结点的)单链表,在键盘上按顺序输入26个大写英文字母A……Z,最后输入的字母Z,放在头结点之后;第一个输入的字母A放在单链表的末尾。
(2)EncryptList( ):将存放于单链表中的所有字母均前移3个位置,即经过前移后变化为:
(3)ListPrint( ):显示单链表所有元素,此函数调用2次,分别在EncryptList ( )函数调用之前、之后使用。
在主函数main( )中调用各个子函数完成单链表的基本操作。
#include "stdio.h"
#include "stdlib.h"
typedef struct LNode
{
char data;
struct LNode *next;
}LNode, *LinkList;
void CreateList(LinkList & L, int n)
{
int i;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
for(i=n;i>0;--i)
{
LinkList p;
p=(LinkList)malloc(sizeof(LNode));
scanf("%c",&(p->data));
p->next=L->next;
L->next=p;
}
}
int ListPrint(LinkList L)
{
LinkList q;
q=L-> next;
if(!q)
{
printf("error!\n");
return 0;
}
while(q)
{
printf("%c\t",q->data);
q=q->next;
}
}
int EncryptList(LinkList L)
{
LinkList q;
q=L-> next;
if(!q)
{
printf("error!\n");
return 0;
}
while(q)
{
q->data=(q->data-65+26-3)%26+65;
q=q->next;
}
return 0;
}
int main()
{
int a=26;
LinkList b;
CreateList(b,a);
ListPrint(b);
EncryptList(b);
ListPrint(b);
return 0;
}
void CreateList(LinkList & L, int n)
{
int i;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
for(i=n;i>0;--i)
{
LinkList p;
p=(LinkList)malloc(sizeof(LNode));
printf("input a char: ");//加一句这个吧!看是不是需要在等待用户输入了呢!
scanf("%c",&(p->data));
p->next=L->next;
L->next=p;
getchar(); //吃掉输入的回车符
}
}