#include <iostream.h>
#include <malloc.h>
struct linkNode{
int data;
linkNode *next;
};
linkNode *createList(){
linkNode *q;
linkNode * p;
int temp;
cout<<"Input the data:";
cin>>temp;
if(temp!=0){
p=(linkNode *)malloc(sizeof(linkNode));
q=p;
p->data=temp;
}
while(1){
cout<<"input data:";
cin>>temp;
if(temp!=0)
{
p->next=(linkNode *)malloc(sizeof(linkNode));
p=p->next;
p->data=temp;
}
else{
p->next=NULL;
break;
}
}
return q;
}
void insertNode(int pre,int dataToInsert,linkNode *head){
linkNode *preNode,*temptr;
int tempdata;
preNode=head;
while(preNode->data!=pre&&preNode!=NULL)
preNode=preNode->next;
if(preNode==NULL)
return;
temptr=(linkNode *)malloc(sizeof(linkNode));
temptr->next=preNode->next;
preNode->next=temptr;
temptr->data=dataToInsert;
}
void deleteNode(int itemTodelete,linkNode *head){
linkNode *itemPtr,*itemPtrNext,*itemPtrPre;
itemPtr=head;
while(itemPtr->data!=itemTodelete&&itemPtr!=NULL)
{itemPtrPre=itemPtr;
itemPtr=itemPtr->next;
}
if(itemPtr==NULL)
return;
itemPtrNext=itemPtr->next;
itemPtrPre->next=itemPtrNext;
free(itemPtr);
}
linkNode *update(int original,int updated,linkNode *head){
linkNode *itemPtr;
for(itemPtr=head;itemPtr->data!=original;itemPtr=itemPtr->next);
if(itemPtr==NULL)
{
cout<<"Original data not found!";
return NULL;
}
else{
itemPtr->data=updated;
return itemPtr;
}
}
void traverseNode(linkNode *head){
linkNode *itemPtr;
itemPtr=head;
while(itemPtr!=NULL)
{
cout<<itemPtr->data<<" ";
itemPtr=itemPtr->next;
}
cout<<endl;
}
int main()
{
linkNode *head;
head=createList();
traverseNode(head);
insertNode(2,10,head);
traverseNode(head);
deleteNode(10,head);
traverseNode(head);
update(2,10,head);
traverseNode(head);
return 0;
}
1.单链表数据结构简单实现