C语言-单链表建立、插入删除操作
(内容为本人学习记录,如有不足之处,感谢各位指出!)
1.定义单链表结构体
typedef struct LNode
{
Elemtype data; //定义数据域
struct LNode *next; //定义指针域
}LNode,*Linklist;
2.初始化——创建一个带头结点的单链表
Linklist InitLinklist(Linklist &L){
L = (LNode*)malloc(sizeof(LNode)); // 分配一个头结点
if (L==NULL){
return NULL;
}
L->next = NULL;
return L;
}
3.头插法建立一个单链表
Linklist List_HeadInsert(Linklist &L){
char c,d; // c待插入的数据,d用于接收输入的空格并过滤
// InitLinklist(L); // 初始化
LNode *s= L; // s是待插入结点
printf("\n请输入链表各结点字符,以空格隔开(备注:需退出输入时,依次输入一次q,以空格隔开,最后再回车即可):\n");
scanf("%c%c",&c,&d);
while(c!='q'){
s = (LNode*)malloc(sizeof(LNode));
s->data = c;
s->next = L->next;
L->next = s;
// fflush(stdin);
scanf("%c%c",&c,&d);
}
return L;
}
4.尾插法建立一个单链表
Linklist List_TailInsert(Linklist &L){
// 正向建立单链表
char c,d; // c待插入的数据,d用于接收输入的空格并过滤
// InitLinklist(L); // 初始化,放在main函数中初始化
LNode *s,*r = L; // s是待插入结点,r是尾指针
printf("\n请输入链表各结点字符,以空格隔开(备注:需退出输入时,依次输入一次q,以空格隔开,最后再回车即可):\n");
scanf("%c%c",&c,&d);
while(c!='q'){
s = (LNode*)malloc(sizeof