/*#!/bin/bash
#shell编程实现冒泡排序
read -p "please input enement:" -t 1
read -a num
echo num:$num
array=(12 121 321 41 521)
echo array
for(i=0;i<${#array[@]};i++)
do
for(j=0;j<${#array[@]};j++)
do
if [ ${array[$j]} -gt ${array[$i]} ]
then
temp=${array[$j]}
array[$j]=${array[$i]}
array[$i]=$temp
if
done
echo ${array[$i]}
done
echo end
echo "${#array[*]}"
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct student
{
char *name;
int age;
int chinese;
int math;
int english;
};
typedef struct Node
{
int data;
struct Node *next;
}PNode;
#define NODE_LEN sizeof(PNode)
PNode * Create_Head_Node(void)
{
PNode *head;
head = (PNode *)malloc(NODE_LEN);
if(head == NULL)
{
return NULL;
}
head->data = 0;
head->next = NULL;
return head;
}
int Insert_Node(PNode *head,int data)
{
PNode *node;
if(head == NULL)
return -1;
node = (PNode *)malloc(NODE_LEN);
if(head == NULL)
{
return -2;
}
node->data = data;
node->next = head->next;
head->next = node;
return 0;
}
int Delete_Node(PNode *head,int data)
{
PNode *temp,*temphead;
temp = head->next;
temphead = head;
if(head == NULL)
{
return -1;
}
while(1)
{
if(temp == NULL)
{
return -2;
}
if (temp->data == data)
{
temphead->next = temp->next;
free(temp);
return 0;
}
temphead = temp;
temp = temp->next;
}
return 0;
}
int Chamge_Node(PNode *head,int data,int changedata)
{
PNode *temp;
temp = head->next;
while(1)
{
if(temp == NULL)
{
return -1;
}
if(temp->data == data)
{
temp->data = changedata;
return 0;
}
temp = temp->next;
}
return 0;
}
PNode *Find_Node(PNode *head,int data)
{
PNode *node;
node = head->next;
while(1)
{
if(node == NULL)
{
return NULL;
}
if (node->data == data)
{
return node;
}
node = node->next;
}
return NULL;
}
void Printf_Node(PNode *head)
{
PNode *temp;
temp = head->next;
while(1)
{
if(temp == NULL)
{
return ;
}
printf("Node data:%d\n",temp->data);
temp = temp->next;
}
}
int GetNum_Node(PNode *head)
{
int num = 0;
PNode *temp;
temp = head;
while(1)
{
temp = temp->next;
if (head == NULL)
{
return num;
}
num++;
}
return 0;
}
void Sort_Node(PNode *head)
{
PNode *first,*second,*temp;
first = head->next;
temp = (PNode*)malloc(NODE_LEN);
temp->next = NULL;
while(1)
{
second = first->next;
if(second == NULL)
{
return;
}
while(1)
{
if((first->data) > (second->data))
{
temp->data = first->data;
first->data = second->data;
second->data = temp->data;
}
second = second->next;
if(second == NULL)
{
break;
}
}
first = first->next;
}
}
int main()
{
PNode *head,*find;
head = Create_Head_Node();
printf("增加节点\n");
Insert_Node(head,1);
Insert_Node(head,2);
Insert_Node(head,3);
Insert_Node(head,4);
Insert_Node(head,5);
Insert_Node(head,6);
Printf_Node(head);
printf("删除节点\n");
Delete_Node(head,3);
Printf_Node(head);
printf("修改节点\n");
Chamge_Node(head,5,7);
Printf_Node(head);
printf("查询节点\n");
find = Find_Node(head,7);
printf("find Node: %d\n",find->data);
Chamge_Node(head,2,9);
printf("排序节点\n");
Printf_Node(head);
printf("\n");
Sort_Node(head);
Printf_Node(head);
return 0;
}
C语言写链表,好久没写数据结构了,花十分钟写个链表
最新推荐文章于 2022-11-11 18:08:46 发布