Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- using namespace std;
- typedef bool Status;
- typedef struct
- {
- char no[20];
- char name[50];
- float price;
- }Book;
- typedef struct LNode{
- Book book;
- struct LNode *next;}LNode,*LinkList;
- Status InitList(LinkList &L){
- L = new LNode;
- L->next=NULL;
- return true;
- }
- LNode *LocateBook(LinkList L,Book book){
- LNode *p = L->next;//p指向首元结点
- while(p && strcmp(p->book.no,book.no))
- p=p->next;
- return p;
- }
- Status ListInsert(LinkList &L,int i,Book book){
- LNode *p =L; int j=0;
- while(p && (j<i-1)){
- p=p->next;
- ++j;
- }
- if(!p||j>i-1) return false;
- LNode *s = new LNode;
- s->book = book;
- s->next = p->next;
- p->next = s;
- return true;
- }
- Status ListDelete(LinkList &L,int i){
- LNode *p=L;int j=0;
- while((p->next)&&(j<i-1)){
- p=p->next;
- ++j;
- }
- if(!(p->next)||(j>i-1)) return false;
- LNode * q =p->next;
- p->next = q->next;
- delete q;
- return true;
- }
- Status ListModify(LinkList &L, Book book){
- LNode *p = LocateBook(L,book);
- if (p==NULL) return false;
- p->book.price = book.price;
- return true;
- }
- int ListCount(LinkList L){
- LNode *p = L->next;
- int count = 0;
- while (p)
- {
- p=p->next;
- count++;
- }
- return count;
- }
- int main(){
- Book bookA;
- strcpy(bookA.no,"9787302257646");
- strcpy(bookA.name,"Basic");
- bookA.price = 25;
- LinkList L;
- InitList(L);
- ListInsert(L,1,bookA);
- cout<<"priceA"<<LocateBook(L,bookA)->book.price<<endl;
- bookA.price =35;
- ListModify(L, bookA);
- cout<<"priceA"<<LocateBook(L,bookA)->book.price<<endl;
- Book bookB;
- strcpy(bookB.no,"9787302219972");
- strcpy(bookB.name,"Apply");
- bookB.price = 32;
- cout<<"ListInsertB"<<ListInsert(L,2,bookB)<<endl;
- cout<<"ListCount"<<ListCount(L)<<endl;
- cout<<"deleteA"<<ListDelete(L,1)<<endl;
- cout<<"ListCount"<<ListCount(L)<<endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement