Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // main.cpp
- // Lat KUIS I
- //
- // Created by Alexander Kevin on 4/10/14.
- // Copyright (c) 2014 Alexander Kevin. All rights reserved.
- //
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- struct data{
- int nim;
- char nama[100];
- struct data *next;
- struct data *prev;
- }*head=0,*tail=0,*curr=0,*temp=0;
- int flag1=0;//1=stack,2=queue
- int flag2=0;//1=single,2=double
- void menu();
- void pH();//push head
- void pT();//push tail
- void pS();//push search
- void Ph();//pop head
- void Pt();//pot tail
- void Ps();//pop search
- void view();
- void set();
- void enter();
- void enter(){
- for(int x=0;x<25;x++,printf("\n"));
- }
- void set(){
- system("cls");
- enter();
- do{
- printf("Gunakan sistem Single linked list(1)/Double linked list(2) : ");
- scanf("%d",&flag2);fflush (stdin);
- }while(flag2!=2&&flag2!=1);
- do{
- printf("Gunakan sistem Stack(1)/Queue(2) : ");
- scanf("%d",&flag1);fflush (stdin);
- }while(flag1!=2&&flag1!=1);
- menu();
- }
- void menu(){
- system("cls");
- int pilih;
- enter();
- if(flag2==1)
- printf("This Tutorial Using Single Linked-List, ");
- else
- printf("This Tutorial Using Double Linked-List, ");
- if(flag1==1)
- printf("Stack system\n");
- else
- printf("Queue system\n");
- printf("===================================\n");view();
- printf("Menu : \n1. Push(double Auto-Search Push,single Head Push)\n2. Pop\n3. Selection Pop\n4. EXIT\n");
- do{
- printf(")Masukan Pilihan Anda [1...4] : ");
- scanf("%d",&pilih);fflush (stdin);
- }while(pilih>4&&pilih<1);
- switch(pilih){
- case 1:
- pS();
- break;
- case 2:
- if(flag1==1)
- Ph();
- else
- Pt();
- break;
- case 3:
- Ps();
- break;
- case 4:
- break;
- default:
- break;
- }
- }
- void pS(){
- curr=(struct data*)malloc(sizeof(data));
- printf("Masukan Nama Yang ingin diinput : ");
- scanf("%s",curr->nama);fflush (stdin);
- printf("Masukan NIM : ");
- scanf("%d",&curr->nim);fflush (stdin);
- if(head==0){
- head=tail=temp=curr;
- curr->next=curr->prev=0;
- }
- else if(flag2==2&&strcmp(head->nama,curr->nama)<1)
- pH();
- else if(flag2==2&&strcmp(tail->nama,curr->nama)>=1)
- pT();
- else if(flag2==2){
- temp=head;
- while(temp!=0){
- if(strcmp(temp->nama,curr->nama)<1)
- break;
- temp=temp->next;
- }
- curr->next=temp;
- curr->prev=temp->prev;
- temp->prev=curr;
- temp=curr->prev;
- temp->next=curr;
- getchar();
- }
- else
- pH();
- menu();
- }
- void Ps(){
- if(head!=0&&flag2!=1){
- curr=(struct data*)malloc(sizeof(data));
- printf("Masukan Nama Yang ingin dihapus : ");
- scanf("%s",curr->nama);fflush (stdin);
- if(strcmp(head->nama,curr->nama)==0)
- Ph();
- else if(strcmp(tail->nama,curr->nama)==0)
- Pt();
- else {
- temp=head;
- while(strcmp(temp->nama,curr->nama)!=0){
- temp=temp->next;
- }
- temp->prev->next=temp->next;
- free(temp);
- printf("%s\n",temp->nama);
- menu();
- }
- }
- else {
- if(flag2==1)
- printf("FITUR TIDAK TERSEDIA");
- else
- printf("Tidak ada data\n");
- getchar();
- menu();
- }
- }
- void pH(){
- curr->next=head;
- if(flag2==2)
- head->prev=curr;
- head=curr;
- head->prev=0;
- }
- void pT(){
- tail->next=curr;
- if(flag2==2)
- curr->prev=tail;
- curr->next=0;
- tail=curr;
- }
- void Ph(){
- if(head!=0){
- curr=head;
- head=curr->next;
- if(flag2==2&&head!=0)
- head->prev=0;
- free(curr);
- }
- else
- printf("Tidak ada data yang bisa dihapus");
- menu();
- }
- void Pt(){
- if(head!=0){
- if(flag2==2){
- curr=tail;
- tail=curr->prev;
- if(tail!=0)
- tail->next=0;
- else
- head=0;
- free (curr);
- }
- else {
- curr=tail;
- if(head!=tail){
- tail=head;
- while(tail->next!=curr)
- tail=tail->next;
- tail->next=0;
- }
- else
- head=0;
- free(curr);
- }
- }
- else
- printf("Tidak ada data yang bisa dihapus");
- menu();
- }
- void view(){
- curr=head;
- while(curr!=0){
- printf("%s, %d\n",curr->nama,curr->nim);
- curr=curr->next;
- }
- printf("\n");
- }
- int main(){
- enter();
- printf("Welcome to Lat. Kuis 1 STRUKTUR DATA\n");
- getchar();
- set();
- }
Advertisement
Add Comment
Please, Sign In to add comment