#include "stdafx.h"
struct node {
int num;
int number;
struct node *next;
};
struct node *creat() {
struct node *head, *temp;
head = temp = NULL;
return head;
}
void printNode(struct node *p) {
struct node *temp = p;
while (temp != NULL) {
printf("Output:%d,%d
", temp->num,temp->number);
temp = temp->next;
}
}
struct node *insert(struct node *head) {
struct node *newnode, *temp, *last;
int value;
int number;
printf("input num: ");
scanf("%d", &value);
printf("input number: ");
scanf("%d", &number);
while (value > 0) {
newnode = (struct node *)malloc(sizeof(struct node));
newnode->num = value;
newnode->number = number;
temp = head;
newnode->next = NULL;
if (head == NULL) {
head = newnode;
newnode->next = NULL;
}
else {
while (temp->next != NULL&&temp->num < value) {
last = temp;
temp = temp->next;
}
if (temp->num >= value) {
if (head == temp) {
newnode->next = head;
head = newnode;
}
else {
last->next = newnode;
newnode->next = temp;
}
}
else {
temp->next = newnode;
newnode->next = NULL;
}
}
printf("input num: ");
scanf("%d", &value);
if (value > 0) {
printf("input number: ");
scanf("%d", &number);
}
}
return head;
}
struct node *deleteNode(struct node *head) {
struct node *temp=head,*last;
int a;
printf("input delete node's num: ");
scanf("%d", &a);
if (head == NULL)
printf("linked is NULL");
else {
while (temp != NULL&&temp->num != a) {
last = temp;
temp = temp->next;
}
if (temp == head) {
head = temp->next;
free(temp);
}
else {
last->next = temp->next;
free(temp);
}
}
return head;
}
int main()
{
struct node *head;
head = creat();
head = insert(head);
printNode(head);
head = deleteNode(head);
printNode(head);
return 0;
}