#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
/*构建结点结构体 */
typedef struct LNode{
int data;
struct LNode * next;
}LNode, * LinkList;
/*用于创建链表的函数 */
/*反序构建的*/
LinkList CreateList_L(LinkList L, int n)
{
int i;
LinkList p;
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
for(i = n; i > 0; --i)
{
p = (LinkList)malloc(sizeof(LNode));
scanf("%d",&p->data);
p->next = L->next;
L->next = p;
}
return L;
}
/* 用于删除结点的函数 */
LinkList ListDelete_L(LinkList L, int i)
{
LinkList p = L;
for(int j=0; j<i; j++){
p = p->next;
}
printf("%s%d\n","被删除的结点是:",p->data);
return L;
}
/*用于遍历链表的函数 */
void ListDisp_L(LinkList L)
{
LinkList p;
int i=0;
p = L->next;
while(p)
{
printf("%d:%d\n", ++i,p->data);
p = p->next;
}
}
int main(int argc, char* argv[])
{
LinkList L;
L = CreateList_L(L, 10);
ListDisp_L(L);
LNode* tmp = L;
for(int i=0; i<5; i++)
tmp++;
printf("第五个元素为:%d", tmp->data);
L = ListDelete_L(L, 7);
return 0;
}
追问为什么构建链表的时候要反序呢
追答这个有什么问题吗?始终要保证头指针不变啊,其实无所谓的