diff --git a/Data Structures/Graph/Undirected Graph/UndirectedGraphAdjacenyList.cpp b/Data Structures/Graph/Undirected Graph/UndirectedGraphAdjacenyList.cpp new file mode 100644 index 0000000..09a302a --- /dev/null +++ b/Data Structures/Graph/Undirected Graph/UndirectedGraphAdjacenyList.cpp @@ -0,0 +1,31 @@ +#include +#include +#include +#include +#define Max 10 +using namespace std; +list g[Max]; +void addEdge(int u,int v){ + g[u].push_back(v); + g[v].push_back(u); + +} + +void print(){ + list::iterator ptr; + for(int i=1;i"; + for(ptr=g[i].begin();ptr!=g[i].end();ptr++){ + cout<<*ptr<<" "; + } + cout< +using namespace std; +#define Max 10 +int graph[Max][Max]; +void addEdge(int u,int v){ + graph[u][v]=1; + graph[v][u]=1; +} + +void prints(){ + cout<<" "; + for(int j=1;j +#include +#include +#include +#include +#define Max 10 +using namespace std; + +class Graph{ + list adjlist[Max]; + + public: + void addEdge(int u,int v){ + adjlist[u].push_back(v); + } + void printGraph(){ + list::iterator it; + + for(int i=0;i"; + for(it=adjlist[i].begin();it!=adjlist[i].end();++it){ + cout<<*it<<"-"; + } + cout<<"/\n"; + } + cout<<"\n\n"; + } + + void outDegree(){ + list::iterator it; + int outdegree[Max]={0}; + for(int i=0;i::iterator it; + int indegree[Max]={0}; + for(int i=0;i +#include +#include +#include +#include +#define Max 10 +using namespace std; + +class Graph{ + list adjlist[Max]; + + public: + void addEdge(int u,int v){ + adjlist[u].push_back(v); + //if undirected + //adjlist[v].push_back(u); + } + void printGraph(){ + list::iterator it; + + for(int i=0;i"; + for(it=adjlist[i].begin();it!=adjlist[i].end();++it){ + cout<<*it<<"-"; + } + cout<<"/\n"; + } + cout<<"\n\n"; + } + + + private: + bool isCyclicUtil(int v, bool visited[], bool recStack[]){ + if(visited[v] == false) + { + + visited[v] = true; + recStack[v] = true; + + + list::iterator it; + for(it = adjlist[v].begin(); it != adjlist[v].end(); ++it) + { + if ( !visited[*it] && isCyclicUtil(*it, visited, recStack) ) + return true; + else if (recStack[*it]) + return true; + } + + } + recStack[v] = false; + return false; + } + + public: + bool isCyclic(){ + bool visited[Max]; + bool recStack[Max]; + for(int i = 0; i < Max; i++){ + visited[i] = false; + recStack[i] = false; + } + + for(int i = 0; i < Max; i++) + if (isCyclicUtil(i, visited, recStack)) + return true; + + return false; + } + +}; + +int main(){ + Graph g; + g.addEdge(1,2); + g.addEdge(3,1); + g.addEdge(2,3); + g.addEdge(3,4); + g.addEdge(4,5); + g.addEdge(5,6); + g.addEdge(6,7); + g.addEdge(7,8); + g.addEdge(7,9); + + g.printGraph(); + + + if(g.isCyclic()){ + cout<<"Graph is cyclic"< +#include +#include +#include +#include +#define Max 10 +using namespace std; + +class Graph{ + list adjlist[Max]; + + public: + void addEdge(int u,int v){ + adjlist[u].push_back(v); + } + void printGraph(){ + list::iterator it; + + for(int i=0;i"; + for(it=adjlist[i].begin();it!=adjlist[i].end();++it){ + cout<<*it<<"-"; + } + cout<<"/\n"; + } + cout<<"\n\n"; + } + + void isbipartite(){ + bool visited[Max]={false}; + int partition[Max]={0}; + int distance[Max]={0}; + queue q; + list::iterator it; + int check=1; + + visited[1]=true; + partition[1]=1; + distance[1]=0; + q.push(1); + while(!q.empty()){ + int u=q.front(); + for(it=adjlist[u].begin();it!=adjlist[u].end();++it){ + if(partition[u]==partition[*it]){ + check=0; + }else{ + if(visited[*it]==false){ + visited[*it]=true; + distance[*it]=distance[u]+1; + partition[*it]=3-partition[u]; + q.push(*it); + } + } + } + q.pop(); + } + if(check){ + cout<<"This is a bipartite graph"<=0 and (text[position+j]==pattern[j] or pattern[j]=='_')): + j=j-1 + + if(j==-1): + occurance.append(str(position+1)) + position=position+1 + else: + position=position+ max(1,j-badchar[ord(text[position+j])]) + print("Text:"+text+"\nPattern:"+pattern+"\nTotal Number matched:"+str(len(occurance))+"\nPositions matched:"+', '.join(occurance)) + +def main(): + while (1): + text=input("Enter a sample text:") + pattern=input("Enter a pattern:") + stringSearch(text,pattern) + print("\nEnter 1 to test Continue\nEnter 0 to EXIT") + n=input("Enter your choise: ") + if(n=='0'): + return + + +if __name__=="__main__": + main()