代码:
#include
#include
typedef char DataType;
typedef struct node* LinkList;
typedef struct node{
DataType data;
LinkList next;
}ListNode;
LinkList head;
ListNode first;
/************************创建链表**************/
void CreateList()
{
DataType ch;
LinkList s,r;
r = head;
ch = getchar();
while(ch != '\n')
{
s = (LinkList)malloc(sizeof(ListNode));
s->data = ch;
r->next = s;
r = s;
ch = getchar();
}
r->next = NULL;
}
/*************************显示链表**********************/
void DisplayList()
{
LinkList r;
r = head->next;
while(r->next != NULL)
{
printf("%c->",r->data);
r = r->next;
}
printf("%c->",r->data);
}
////////////////////////////////////////////////////////////
/************************插入链表****************************/
void InsertList(DataType ch, int locate)
{
int i = 0;
LinkList p = head;
LinkList s;
while(inext != NULL)
{
p = p->next;
i++;
}
if(i != locate-1)
{
printf("插入位子错误\n");
return;
}
s = (LinkList)malloc(sizeof(ListNode));
s->data = ch;
s->next = p->next;
p->next = s;
}
void main()
{
int select,locate;
DataType ch;
head = &first;
head->next = NULL;
printf("请输入数据\n");
CreateList();
while(1)
{
printf("\n\n============Main Menu=============\n");
printf("
1.InsertList
2.DeleteList\n");
printf("
3.GetNode(i)
4.GetNode(x)\n");
printf("
5.Length
6.Display\n");
printf("
7.exit\n");
printf("==================================\n");
scanf("%d",&select);
switch(select)
{
case 1:
printf("请输入要插的数据\n");
scanf("%c",&ch);
getchar();
printf("请输入位子\n");
scanf("%d",&locate);
getchar();
InsertList(ch,locate);
break;
case 6:
DisplayList();
getchar();
break;
case 7:
exit(0);
break;
}
getchar();
}
}
插入后显示链表出问题。找了半天也不知道哪里出错
|