数据结构|反向遍历单链表 C语言版

#include #include typedef int ElemType; typedef struct LNode { ElemType data; //数据域 struct LNode *next; //指针域} LNode; //尾插法建立单链表 LNode* List_TailInsert() { int x; LNode *L = (LNode*) malloc(sizeof(LNode)); //创建头结点,L为头指针 LNode *s; LNode *r = L; //r为表尾指针,r一直指向表为结点 scanf("%d", &x); //输入节点的值 while (x != 999) { //输入999表示结束s = (LNode*) malloc(sizeof(LNode)); s->data = https://www.it610.com/article/x; r->next = s; r = s; //r指向新的表尾节点 scanf("%d", &x); } r->next = NULL; //尾结点的指针置为空 return L; }//遍历链表 void PrintList(LNode *L) { LNode *p; p = L->next; printf("遍历单链表: "); while (p->next != NULL) {printf("%d ", p->data); p = p->next; } if (p->next == NULL) { //输出最后一个元素 printf("%d ", p->data); printf("\n"); }}//反向遍历链表 void R_Print(LNode *L) { if (L->next != NULL) { R_Print(L->next); //递归 } if (1) { printf("%d ", L->data); } }int main() { LNode *L = List_TailInsert(); PrintList(L); LNode *P = L->next; printf("反向遍历单链表: "); R_Print(P); }

    推荐阅读