单链表数据结构简单实现

来源:互联网 发布:sql in和not in的用法 编辑:程序博客网 时间:2024/06/16 09:17

#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.单链表数据结构简单实现


0 0