#ifndef scnode_h
#define scnode_h
typedef struct node {
int data;
node* next;
}node,*linklist;
int initialize(linklist& list);
int cleanup(linklist& list);
int insertdata(linklist& list, int data);
int deletedata(linklist& list, int data);
int searchdata(linklist& list, int data); // return the index that first find
#endif
#include "scnode.h"
#include <stdlib.h>
#include <iostream>
using namespace std;
int initialize(linklist& list) {
int retval = 1;
int headnumber = 0;
node* head = new node;
if (null != head) {
head->data = headnumber;
head->next = head;
list = head;
retval = 1;
} else {
retval = 0;
}
return retval;
}
int cleanup(linklist& list){
node* head = list;
node* pnode = head;
node* deletenode = null;
int retval = 1;
if (null == head) {
retval = 1;
} else {
deletenode = pnode->next;
while (deletenode != head) {
pnode = deletenode->next;
delete deletenode;
deletenode = pnode;
}
delete head;
retval = 1;
}
return retval;
}
int insertdata(linklist& list, int data) {
static int nodenumber = 0;
node* head = list;
node* pnode = head;
node* insertnode = new node;
int retval = 1;
if (null != insertnode) {
if (null == pnode) {
retval = 0;
} else {
while (pnode->next != head) {
pnode = pnode->next;
}
pnode->next = insertnode;
insertnode->next = head;
insertnode->data = data;
nodenumber++;
head->data = nodenumber;
retval = 1;
}
} else {
retval = 0;
}
return retval;
}
int searchdata(linklist& list, int data) {
node* head = list;
node* pnode = head;
node* searchnode = null;
int index = 1;
if (null == head) {
index = -1;
} else {
searchnode = pnode->next;
while ((searchnode != head) && (searchnode->data != data)) {
pnode = searchnode;