首页 > 试题广场 >

KiKi学结构体和指针

[编程题]KiKi学结构体和指针
  • 热度指数:9783 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
KiKi学习了结构体和指针,他了解了结构体类型可以定义包含多个不同类型成员,而指针本质是内存地址,是引用数据的另外一种方式。现在他想将多个输入的数据通过结构体和指针的方式连接在一起,形成一个单向链表,即:每个结点是结构体类型,包括整型数据成员(data)和结构体指针类型成员(next),每个结点的指针部分指向下一个输入的结点。具体建立过程如下:先输入n个整数,按照数据输入的顺序建立一个带头结点的单链表,再输入一个数据m,将单链表中的值为m的结点全部删除。输出删除后的单链表信息。


输入描述:
包括三行:
第一行输入数据个数n (3≤n≤100);

第二行依次输入n个整数,用空格分隔;

第三行输入欲删除数据m。



输出描述:
包括两行:

第一行输出完成删除后的单链表长度;

第二行依次输出完成删除后的单链表数据。


示例1

输入

5
1 2 2 3 4
2

输出

3
1 3 4
a=input()
b=list(map(int,input().split()))
c=int(input())
for i in b.copy():
    if i==c:
        b.remove(c)
print(len(b))
for i in b:
    print(i,end=' ')

发表于 2021-06-03 00:34:14 回复(0)
class linkNode():
    def __init__(self, data):
        self.data = data
        self.next = None


class sigLink():
    def __init__(self, item):
        self.length = len(item)
        if self.length <= 0:
            return
        i = 0
        self.head = linkNode(item[i])
        self.tail = self.head
        i += 1
        while i < self.length:
            self.tail.next = linkNode(item[i])
            self.tail = self.tail.next
            i += 1

    def getlength(self):
        """
        获取链表的长度
        :return:
        """
        print(self.length)

    def printlink(self):
        if self.head == None:
            print()
        p = self.head
        while p != None:
            print(p.data, end=" ")
            p = p.next

    def linkAppend(self, num):
        """
        在链表尾部追加节点
        :param num: 数字转为节点中的数据
        :return:
        """
        self.tail.next = linkNode(num)
        self.tail = self.tail.next
        self.length += 1

    def deletNum(self, num):
        """
        删除指定元素
        :param num:
        :return:
        """
        pre = self.head
        cur = pre.next
        temp=pre
        while temp != None and temp.data == num:
            temp = temp.next
            self.length -= 1
        self.head=temp
        pre=temp
        while pre != None and cur!=None:
            while pre.data==num and pre!=None:
                pre=pre.next
                self.length-=1
            cur=pre.next
            while cur!=None and cur.data==num:
                cur=cur.next
                self.length -= 1
            pre.next = cur
            if cur==None:
                break
            pre=cur
            cur=cur.next


n = int(input())
s = input().split()
m = input()
a = sigLink(s)
a.deletNum(m)
a.getlength()
a.printlink()

发表于 2020-10-30 09:22:14 回复(0)
n=int(input())
a=[int(i) for i in input().split()]
m=int(input())
newa=[] for i in a: if m==i: continue  else:
        newa.append(i) print(len(newa)) for i in newa: print(i,end=' ')
发表于 2020-07-16 20:14:10 回复(1)
class Node():
    def __init__(self):
        self.data = 0
        self.nextnode = None
    def inputdata(self,data):
        self.data = data
class singlelink():
    def __init__(self):
        self.head = None
    def appendnode(self,data):
        if self.head == None:
            newnode = Node()
            newnode.inputdata(data)
            self.head = newnode
        else:
            newnode = Node()
            newnode.inputdata(data)
            nownode = self.head
            while 1:
                if nownode.nextnode != None:
                    nownode = nownode.nextnode
                else:
                    break
            nownode.nextnode = newnode
    def length(self):
        nownode = self.head
        number = 0
        if self.head != None:
            number += 1
        else:
            return number
        while 1:
            if nownode.nextnode != None:
                nownode = nownode.nextnode
                number += 1
            else:
                break
        return number
    def remove(self,data):
        cur = self.head
        while cur:
            if cur.data == data:
                if cur == self.head:
                    self.head = cur.nextnode
                else:
                    before.nextnode = cur.nextnode
            if cur.data != data:
                before = cur
            cur = cur.nextnode
    def output(self):
        cur = self.head
        while cur:
            print(cur.data,end=' ')
            cur = cur.nextnode
int(input())
s = [int(x) for x in input().split()]
link = singlelink()
for i in s:
    link.appendnode(i)
link.remove(int(input()))
print(link.length())
link.output()
发表于 2020-05-20 10:42:38 回复(0)