#include#include #include typedef struct NODE { struct NODE*pnext; int data; }NODE, *PNODE; PNODE create_list1(void);//头插法 PNODE create_list2(void);//尾插法 bool is_empty(PNODE p); int lenth(PNODE phead); bool traverse_list(PNODE); bool sort_list(PNODE); bool delete_list(PNODE, int, int*); bool insert_list(PNODE, int, int); int main(void) { int f; int x; PNODE phead = create_list1(); traverse_list(phead); sort_list(phead); traverse_list(phead); f = lenth(phead); printf("%dn", f); delete_list(phead, 3, &x); traverse_list(phead); insert_list(phead, 4, 5); traverse_list(phead); return 0; } PNODE create_list1(void)//头插法 { PNODE phead = (PNODE)malloc(sizeof(NODE)); if (NULL == phead) { printf("分配失败!"); exit(-1); } int len = 0; int i = 0; scanf("%d", &len); PNODE ptail = phead; ptail->pnext = NULL; for (i = 0; i < len; i++) { printf("请输入第%d个元素", i + 1); int val; scanf("%d", &val); PNODE pnew = (PNODE)malloc(sizeof(NODE)); if (NULL == pnew) { printf("分配失败"); exit(-1); } pnew->data = val; ptail->pnext = pnew; pnew->pnext = NULL; ptail = pnew; } return phead; } bool traverse_list(PNODE phead) { if (is_empty(phead)) { return false; } else { PNODE p; p = phead->pnext; while (p != NULL) { printf("%d", p->data); p = p->pnext; } } printf("n"); return true; } bool is_empty(PNODE phead) { if (phead->pnext == NULL) { return true; } else { return false; } } int lenth(PNODE phead) { int x = 0; PNODE p; p = phead->pnext; while (p != NULL) { x++; p = p->pnext; } return x; } bool sort_list(PNODE phead)//从大到小进行排序 { int i, h,tem; PNODE p1,p2; int len = lenth(phead); for(i=0,p1=phead->pnext;i pnext) for (h = i + 1,p2=p1->pnext;h < len; h++,p2=p2->pnext) { if (p2->data > p1->data) { tem = p1->data; p1->data = p2->data; p2->data = tem; } } return true; } bool delete_list(PNODE phead,int x,int* y) { int i = 0; PNODE p = phead; while (p->pnext != NULL && i < x - 1) { i++; p = p->pnext; } if (i > x - 1 || p->pnext == NULL) return false; *y = p->data; PNODE q = p->pnext; p->pnext = p->pnext->pnext; free(q); q = NULL; return true; } bool insert_list(PNODE phead, int x, int y)//x代表所处位置,代表要插入的数值 { int i=0; PNODE p = phead; while (p->pnext != NULL && i < x - 1) { i++; p = p->pnext; } if (i > x - 1 || p->pnext == NULL) return false; PNODE pnew = (PNODE)malloc(sizeof(NODE)); pnew->pnext = p->pnext; pnew->data = y; p->pnext = pnew; }
附带删除插入代码



