#include <stdio.h>
#include <stdlib.h>
typedef struct LNode
{
char data;
struct LNode *next;
} LNode; // 结构定义
typedef struct LNode *LinkList; // 指针类型定义
LinkList creat_Link_List(int n)
{
int i;
LinkList head, p, q;
if (n == 0)
return NULL;
head = (LinkList)malloc(sizeof(LNode));
p = head;
printf("Please input %d chars for the link list\n", n);
for (i = 0; i < n; i++)
{
q = (LinkList)malloc(sizeof(LNode));
scanf("%c", &(q->data));
getchar();
q->next = NULL;
p->next = q;
p = q;
}
return (head);
} // 创造一个结点数为n的链表
void insert_Qian(LinkList L, char a, char b)
{
LinkList p, q;
q = (LinkList)malloc(sizeof(LNode));
q->data = b;
q->next = NULL;
if (L == NULL)
L = q;
else
{
p = L;
while (p->next->data != a && p->next != NULL)
{
p = p->next;
}
if (p->next->data = a)
{
q->next = p->next;
p->next = q;
}
else
{
p->next = q;
}
}
} // 在值为a的结点之前插入一个值为b的结点,如果该结点不存在,则将其插入列表的末尾
int deletenode(LinkList L, char a)
{
LinkList p, q;
q = L;
if (q == NULL)
return 1;
if (q->data == a)
{
L = q->next;
free(q);
return 0;
}
else
{
while (q->data != a && q->next != NULL)
{
p = q;
q = q->next;
if (q->data == a)
{
p->next = q->next;
free(q);
return 0;
}
}
}
} // 删除值为a的节点
int main()
{
LinkList creat_Link_List(int n);
void insert_Qian(LinkList L, char a, char b);
int deletenode(LinkList L, char a);
LinkList L, p;
int m;
char c, d;
printf("Please input the number of nodes for the link_list \n m=");
scanf("%d", &m);
getchar();
// L=(LinkList) malloc(sizeof(LNode));
L = creat_Link_List(m);
printf("The Link list is like:\n");
p = L;
p=p->next;
while (p != NULL)
{
printf("%c", p->data);
p = p->next;
}
printf("\n");
printf("Please input the position for a\nc=");
scanf("%c", &c);
getchar();
printf("please input the value that you want to insert\nd=");
scanf("%c", &d);
getchar();
insert_Qian(L, c, d);
printf("The link list after insertion is like:\n");
p = L;
p=p->next;
while (p != NULL)
{
printf("%c", p->data);
p = p->next;
}
printf("\n");
printf("Please input the position for a a=");
scanf("%c", &c);
getchar();
deletenode(L, c);
p = L;
p=p->next;
while (p != NULL)
{
printf("%c", p->data);
p = p->next;
}
return 0;
}