单链表的创建,遍历与销毁
- 描述
从键盘输入任意多个正整数,输入以-1结束。逆序输出这些整数(不包括-1)。
输入- 任意多的正整数,输入序列以-1结束。 输出
- 逆序输出这些整数(不包括-1)。 样例输入
3 8 2 9 7 4 -1
样例输出4 7 9 2 8 3
提示- 1、逆序创建链表。结点数据域是整型数。每输入一个整数,向链表中插入一个结点。当输入-1时结束链表的创建。
2、遍历链表,输出结点数据域的值。
3、遍历完成后,要求销毁该链表。 #include<stdio.h> #include<stdlib.h> #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define MAXSIZE 20 typedef int Status; typedef int ElemType; typedef struct Node { ElemType data; struct Node *next; } Node; typedef struct Node *LinkList; Status InitList(LinkList *L);//初始化链表 Status ListInsert(LinkList *L,int i,ElemType e);//往链表中第i个位置插入数据 int main() { int n; LinkList l; InitList(&l); scanf("%d",&n); while(n!=-1) { ListInsert(&l,1,n); scanf("%d",&n); } LinkList p; p=l->next; while(p) { printf("%d ",p->data); p=p->next; } return 0; } Status InitList(LinkList *L) { *L=(LinkList)malloc(sizeof(Node)); if(!(*L)) return ERROR; (*L)->next=NULL; return OK; } Status ListInsert(LinkList *L,int i,ElemType e) { int j; LinkList p,s; p = *L; j = 1; while(p && j < i) { p = p->next; ++j; } if( !p || j > i) return ERROR; s = (LinkList)malloc(sizeof(Node)); s->data = e; s->next = p->next; p->next = s; return OK; }
2520



被折叠的 条评论
为什么被折叠?



