Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct node node;
- struct node{
- int num;
- node *next;
- };
- int main()
- {
- int type;
- node *ptr,*head=NULL,*newnode;
- while(EOF != scanf("%d",&type)){
- if(type > 0){
- newnode = malloc(sizeof(node));//add new node
- newnode -> num = type;//put type in
- if(head == NULL){//if is empty
- head = newnode;//then newnode is head
- newnode -> next = NULL;//next point to NULL
- }else{
- if(head -> num > newnode -> num){//if head > newnode
- newnode -> next = head;//then swich
- head = newnode;//swich
- }else{
- ptr = head;//checkpointer back to head
- while(ptr -> next != NULL){
- if(newnode -> num < ptr -> next -> num){
- break;//found the node >newnode
- }
- ptr = ptr -> next;//next one
- }
- if(ptr == NULL){//last one
- newnode -> next = NULL;//newnode's next point to NULL
- ptr -> next = newnode;//ptr's next point to newnode
- }else{// not last one
- newnode -> next = ptr -> next;//newnode's next point to ptr's next
- ptr -> next = newnode;//ptr's next point to newnode
- }
- }
- }
- }else if(type == 0){
- node *out = head;
- if(head == NULL){// no list
- printf("list is NULL");
- }
- while(out != NULL){
- printf("%d,",out->num);//print list
- out = out -> next;
- }
- }else{
- node *del,*search=head;
- while(search -> next != NULL){
- if(search -> num == abs(type)){//first del
- head = search -> next;//head move to sec.
- free(search);//freeeeeeeeeeeeeee
- break;
- }
- if(search -> next -> num == abs(type)){//normal case
- del = search -> next;//del is search next
- search -> next = del -> next;//search's next point to del's next
- free(del);//freeeeeeeeeeeeeee
- } else{
- search = search -> next;//move on
- }
- }
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement