Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- typedef struct _nodes{
- int num;
- struct _nodes *link;
- } nodes;
- void printList(nodes *f){
- if (f==NULL)
- return;
- printf("%i ", f->num);
- printList(f->link);
- }
- int nodesNumber(nodes *f){
- int count=0;
- while (f!=NULL){
- count++;
- f=f->link;
- }
- return count;
- }
- nodes *first;
- void addFront(int x){
- nodes *p=(nodes*)malloc(sizeof(nodes));
- p->num=x;
- p->link=first;
- first=p;
- }
- void addAt(int index, int x){
- nodes *p=first;
- int i;
- for (i=0; i<index-1; i++)
- p=p->link;
- nodes *ip=(nodes*)malloc(sizeof(nodes));
- ip->num=x;
- ip->link=p->link;
- p->link=ip;
- }
- void reverse(nodes *f, nodes *prev){
- if (f->link==NULL){
- first=f;
- f->link=prev;
- return;
- }
- reverse(f->link, f);
- f->link->link=f;
- f->link=prev;
- }
- int main(void) {
- first=(nodes*)malloc(sizeof(nodes));
- first->num=1;
- first->link=(nodes*)malloc(sizeof(nodes));
- first->link->num=5;
- first->link->link=(nodes*)malloc(sizeof(nodes));
- first->link->link->num=19;
- first->link->link->link=(nodes*)malloc(sizeof(nodes));
- first->link->link->link->num=32;
- first->link->link->link->link=(nodes*)malloc(sizeof(nodes));
- first->link->link->link->link->num=2;
- first->link->link->link->link->link=(nodes*)malloc(sizeof(nodes));
- first->link->link->link->link->link->num=4;
- first->link->link->link->link->link->link=NULL;
- printf("Initial list:\n");
- printList(first);
- printf("\nNumber of nodes: %i\n", nodesNumber(first));
- printf("\nInserting 8 at the beginning:\n");
- addFront(8);
- printList(first);
- printf("\nNumber of nodes: %i\n", nodesNumber(first));
- printf("\nInserting 7 at position 3:\n");
- addAt(3, 7);
- printList(first);
- printf("\nNumber of nodes: %i\n", nodesNumber(first));
- printf("\nReverse:\n");
- reverse(first, NULL);
- printList(first);
- printf("\nNumber of nodes: %i\n", nodesNumber(first));
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment