//插入 intInsert(Node *first,int x,DataType t){ //x 为插入位置,t为要插入的数据 Node *s = NULL,*p = first; int cnt = 0; while ( p != NULL && cnt < x - 1){ p = p -> next; cnt ++; } if(p == NULL ){ return0; // 插入位置错误返回0 } s = (Node*)malloc(sizeof(Node));//请求分配空间 . s -> data = t; //申请一个结点,数据域为x s -> next = p -> next; //将结点S插入到结点P之后 p -> next = s; return1; }
//删除某一位置的结点 intDelete(Node *first,int i,DataType *ptr){ //i为要删除的数据,ptr取得删除的值 Node *p = first,*q = NULL; int cnt = 0; DataType x; while(p != NULL && cnt < i - 1){ p = p -> next; cnt++; } if(p == NULL || p-> next == NULL){ return0; //删除失败 } q = p -> next; *ptr = q -> data; //删除失败的值 p -> next = q -> next; free(q); return1; }
//销毁 voidDestroyList(Node *first){ Node *p = first; while (first != NULL){ //依次释放储存空间 first = first -> next; free(p); p = first; } }
intmain() { Node *first; DataType data[] = {1,2,3,4,5}; int x,n;
n = sizeof(data)/sizeof(data[0]);//求出数组data中元素个数
first = CreatTailList(data,n);//尾插
printf("After Creat,the data is: "); PrintList(first); printf("\n");
if(Delete(first,3,&x)){ printf("After Delete,the data is: "); PrintList(first); printf(" Delete %d",x); printf("\n"); } else printf("Delete Defult\n");
if(Insert(first,2,7)){ printf("After Insert,the data is: "); PrintList(first); printf("\n"); } else printf("Insert Defult\n");