若有写的不妥的地方,留言或在通过文章下方邮箱联系我即可,万分感谢。
我是在mac系统下调试的代码,需要include的包可能会与其他系统略有不同。
# include <stdio.h>
# include <stdlib.h>
typedef struct MyNode{
int data;
struct MyNode * pNext;
}*PNODE, NODE;
PNODE create_list(void);
void showList(PNODE);
bool isEmpty(PNODE);
int length(PNODE);
bool insert(PNODE, int, int);
bool delete_list(PNODE, int, int *);
void sort(PNODE);
int main(void)
{
PNODE pHead = create_list();
showList(pHead);
if (isEmpty(pHead))
printf("%s\n", "链表为空!");
else
printf("%s\n", "链表不为空!");
sort(pHead);
showList(pHead);
insert(pHead, 5, 100);
showList(pHead);
int val;
delete_list(pHead, 5, &val);
showList(pHead);
printf("%d\n", val);
return 0;
}
PNODE create_list(void){
int len;
int i;
int val;
printf("%s ", "请输入您要生成的链表节点的个数:");
scanf("%d", &len);
PNODE pHead = (PNODE)malloc(sizeof(NODE));
if(pHead==NULL){
printf("%s\n", "内存分配失败!");
exit(-1);
}
PNODE pTail = pHead;
pTail->pNext = NULL;
for(i=0; i<len; i++){
printf("请输入第%d个节点的值:", i+1);
scanf("%d", &val);
PNODE pNew = (PNODE)malloc(sizeof(NODE));
if (pNew==NULL){
printf("%s\n", "内存分配失败!");
exit(-1);
}
pTail->pNext = pNew;
pNew->data = val;
pNew->pNext = NULL;
pTail=pNew;
}
return pHead;
}
void showList(PNODE pHead){
PNODE p = pHead->pNext;
while (p!=NULL){
printf("%d ", p->data);
p = p->pNext;
}
printf("\n");
}
bool isEmpty(PNODE pHead){
if (pHead->pNext==NULL)
return true;
return false;
}
int length(PNODE pHead){
int len = 0;
PNODE p = pHead->pNext;
while(p!=NULL){
p = p->pNext;
len++;
}
return len;
}
bool insert(PNODE pHead, int index, int val){
PNODE p = pHead;
int i=0;
while(i<index&&p!=NULL){
p = p->pNext;
i++;
}
if (p==NULL)
return false;
PNODE pNew = (PNODE)malloc(sizeof(NODE));
if (pNew==NULL){
printf("%s\n", "动态内存分配失败!");
exit(-1);
}
pNew->data = val;
pNew->pNext=p->pNext;
p->pNext = pNew;
return true;
}
/**/
bool delete_list(PNODE pHead, int index, int * val){
PNODE p = pHead;
int i = 0;
while(i<index && p!=NULL){
p = p->pNext;
i++;
}
if (p==NULL)
return false;
PNODE q = p->pNext;
*val = q->data;
p->pNext = q->pNext;
free(q);
return true;
}
void sort(PNODE pHead){
PNODE p, q;
for(p = pHead->pNext; p->pNext != NULL; p=p->pNext){
for(q=p->pNext; q != NULL; q=q->pNext){
if (p->data > q->data){
p->data = p->data + q->data;
q->data = p->data - q->data;
p->data = p->data - q->data;
}
}
}
}
email: 17126252@bjtu.edu.cn
版权声明:博客编写不易,转载时请注明出处,万分感谢 !
https://blog.csdn.net/zyy_2018/article/details/79733562