赞
踩
- //有序单链表
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- struct Node
- {
- int data;
- struct Node *next;
- };
- //顺序插入
- void Insert(Node *p,int n)
- {
- //利用两个指针
- Node *p1=p;//指向头 ,因为这是有序单链表 所以每次插入前都得先从头来
- Node *p2=p->next; //指向头节点之后 之后也用它来判断是否位只含有头节点的空链表
- Node *s=(Node *)malloc(sizeof(Node));
- s->data=n;//写入数据
- while(p2&&p2->data>n)
- {
- p1=p2;
- p2=p2->next;//这样同时往后移的话 插入的时候好插入
- }
- s->next=p2;
- p1->next=s;//插入节点
- }
- //遍历列表
- void traversal(Node *p)
- {
- Node *p3=p->next;//不能从p开始遍历因为p是头节点没存东西
- while(p3)
- {
- printf("%d\n",p3->data);
- p3=p3->next;
- }
- }
- int main()
- {
- Node *p;
- int i,j,k;
- p=(Node *)malloc(sizeof(Node));
- p->next=NULL;//创建头节点
- for(i=0;i<3;i++)
- {
- printf("Please input the number you want to insert");
- scanf("%d",&k);
- Insert(p,k);
- }
- traversal(p);
- return 0;
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。